আমার কাছে টেক্সট ফাইল রয়েছে যা আমি পাইথনে মুছতে চাই। আমি কেমন করে ঐটি করি?
আমার কাছে টেক্সট ফাইল রয়েছে যা আমি পাইথনে মুছতে চাই। আমি কেমন করে ঐটি করি?
উত্তর:
অজগরে:
open('file.txt', 'w').close()
অথবা বিকল্প হিসাবে, যদি আপনার ইতিমধ্যে একটি খোলা ফাইল থাকে:
f = open('file.txt', 'r+')
f.truncate(0) # need '0' when using r+
সি ++ তে আপনি অনুরূপ কিছু ব্যবহার করতে পারেন।
#include<fstream>এবং তারপরে std::ofstream("file.txt");পাইথনের মতোই ছোট। :)
f.seek(0)পরে যুক্ত করতে ভুলবেন না তবে f.truncate(0)অন্যথায় আপনার ফাইলটির শুরুতে অদ্ভুত \ x00 সংযুক্ত হবে।
অনড্রের উত্তরের কোনও এক্সটেনশনের সম্পূর্ণ উত্তর নয়
truncate()(আমার পছন্দসই পদ্ধতি) ব্যবহার করার সময় আপনার কার্সার প্রয়োজনীয় অবস্থানে রয়েছে তা নিশ্চিত করুন। যখন কোনও নতুন ফাইল পড়ার জন্য খোলা হয় - open('FILE_NAME','r')এটির কার্সারটি ডিফল্টরূপে 0 এ থাকে। তবে আপনি যদি নিজের কোডটির মধ্যে ফাইলটি বিশ্লেষণ করে থাকেন তবে অবশ্যই ফাইলটির শুরুতে আবার নির্দেশ করতে ভুলবেন না অর্থাৎ truncate(0)
ডিফল্টরূপে truncate()বর্তমান কার্সার অবস্থান থেকে শুরু হওয়া কোনও ফাইলের বিষয়বস্তু ছাঁটাই করা হয়।
"লিখন" মোডে একটি ফাইল খুললে তা সাফ হয়ে যায়, আপনাকে বিশেষভাবে এটি লিখতে হবে না:
open("filename", "w").close()
(ফাইলটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাওয়ার সময়টির সময় হিসাবে আপনি এটি বন্ধ করা উচিত বাস্তবায়ন নির্দিষ্ট হতে পারে)
ব্যবহারকারী @ জামিলাক থেকে একটি বিকল্প রূপ open("filename","w").close()হ'ল
with open('filename.txt','w'): pass
ব্যবহার করার সময় with open("myfile.txt", "r+") as my_file:, আমি অদ্ভুত শূন্যগুলি পাই myfile.txt, বিশেষত যেহেতু আমি প্রথমে ফাইলটি পড়ছি। এটি কাজ করার জন্য, আমাকে প্রথমে my_fileফাইলটির শুরুতে পয়েন্টারটি পরিবর্তন করতে হয়েছিল my_file.seek(0)। তারপরে আমি my_file.truncate()ফাইলটি সাফ করতে পারি ।
আপনাকে ফাইলটি ওভাররাইট করতে হবে। সি ++ এ:
#include <fstream>
std::ofstream("test.txt", std::ios::out).close();
close()কল করার দরকার নেই । ডেস্ট্রাক্টর ফাইলটি বন্ধ করে দেবে। সুতরাং আপনার কেবলমাত্র একটি অস্থায়ী তৈরি করতে হবে:ofstream("test.txt");
আপনার প্রোগ্রামের ভিতরে ফাইল পয়েন্টারটি নালায় অর্পণ করা কেবল ফাইলের সেই রেফারেন্স থেকে মুক্তি পাবে। ফাইল এখনও আছে। আমি মনে করি remove()সি এর stdio.hকাজটি আপনি সেখানে সন্ধান করছেন for পাইথন সম্পর্কে নিশ্চিত নয়।
যদি সুরক্ষা আপনার পক্ষে গুরুত্বপূর্ণ হয় তবে ফাইলটি লেখার জন্য খুলতে এবং এটি আবার বন্ধ করার পক্ষে যথেষ্ট হবে না। কমপক্ষে কিছু তথ্য এখনও স্টোরেজ ডিভাইসে থাকবে এবং উদাহরণস্বরূপ, ডিস্ক পুনরুদ্ধারের ইউটিলিটি ব্যবহার করে এটি পাওয়া যাবে।
ধরুন, উদাহরণস্বরূপ, আপনি যে ফাইলটি মুছে ফেলছেন তাতে প্রোডাকশন পাসওয়ার্ড রয়েছে এবং উপস্থিত অপারেশনটি সম্পূর্ণ হওয়ার সাথে সাথেই মুছতে হবে।
ফাইলটি একবার ব্যবহার শেষ করে জিরো-ফিলিং করা সংবেদনশীল তথ্য নষ্ট হওয়ার বিষয়টি নিশ্চিত করতে সহায়তা করে।
সাম্প্রতিক প্রকল্পে আমরা নিম্নলিখিত কোডগুলি ব্যবহার করেছি, যা ক্ষুদ্র পাঠ্য ফাইলগুলির জন্য ভাল কাজ করে। এটি শূন্যরেখাগুলির সাথে বিদ্যমান সামগ্রীগুলি ওভাররাইট করে।
import os
def destroy_password_file(password_filename):
with open(password_filename) as password_file:
text = password_file.read()
lentext = len(text)
zero_fill_line_length = 40
zero_fill = ['0' * zero_fill_line_length
for _
in range(lentext // zero_fill_line_length + 1)]
zero_fill = os.linesep.join(zero_fill)
with open(password_filename, 'w') as password_file:
password_file.write(zero_fill)
নোট করুন যে শূন্য-পূরণ আপনার সুরক্ষার গ্যারান্টি দেবে না। আপনি যদি সত্যিই উদ্বিগ্ন হন তবে আপনার ড্রাইভে থাকা 'খালি' জায়গাটি মুছতে মুছতে আপনি ফাইল শ্রেডার বা সিসিলিয়েনারের মতো বিশেষজ্ঞ ইউটিলিটি শূন্য-পূরণ এবং ব্যবহার করার পক্ষে সেরা ।
আপনার শেষটি মুছে ফেলার প্রয়োজন না হলে আপনি জায়গা থেকে কোনও ফাইল থেকে "মুছতে" পারবেন না। হয় একটি "খালি" মানের ওভাররাইট সহ সামগ্রী থাকুন, বা আপনার যে ফাইলটি যত্নশীল সেগুলির অংশগুলি পড়ুন এবং এটি অন্য কোনও ফাইলে লিখুন।
যেহেতু পাঠ্য ফাইলগুলি ক্রমযুক্ত, আপনি সেগুলির সরাসরি ডেটা মুছতে পারবেন না। আপনার বিকল্পগুলি হ'ল:
উপরের যে কোনও ধারণা বাস্তবায়নের জন্য seek/ truncateফাংশন / পদ্ধতিটি দেখুন। পাইথন এবং সি উভয়েরই এই ফাংশনগুলি রয়েছে।
os.removeবা os.unlinkসিটিতে ব্যবহার করুন বা unlinkঅন্য একটি বিকল্প হ'ল কেবল লেখার বা ব্যবহারের জন্য ফাইলটি পুনরায় খোলা truncate।
ফাইল লিখিত এবং লিখন পড়া
def writeTempFile(text = ''):
filePath = "/temp/file1.txt"
if not text: # If blank return file content
f = open(filePath, "r")
slug = f.read()
return slug
else:
f = open(filePath, "a") # Create a blank file
f.seek(0) # sets point at the beginning of the file
f.truncate() # Clear previous content
f.write(text) # Write file
f.close() # Close file
return text
এটা আমার জন্য কাজ করেছে
আপনি এটি ব্যবহার করতে পারেন (উপরের কয়েকটি উত্তরের উপর ভিত্তি করে):
file = open('filename.txt', 'w')
file.write('')
file.close
অবশ্যই এটি একটি ফাইল সাফ করার জন্য খুব খারাপ উপায় কারণ এটির জন্য অনেকগুলি কোডের লাইন প্রয়োজন, তবে আমি কেবল এটি আপনাকে এই পদ্ধতিতেও করা যেতে পারে তা দেখানোর জন্য এটি লিখেছিলাম।
শুভ কোডিং!