আমার কাছে একটি টেক্সট ফাইল আছে।
এটি খালি আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?
আমার কাছে একটি টেক্সট ফাইল আছে।
এটি খালি আছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?
উত্তর:
>>> import os
>>> os.stat("file").st_size == 0
True
import os
os.path.getsize(fullpathhere) > 0
OSError
মিথ্যা ধরতে হবে এবং ফিরে আসতে হবে।
উভয় getsize()
এবং stat()
যদি ফাইল উপস্থিত না থাকলে একটি ব্যতিক্রম নিক্ষেপ করা হবে। এই ফাংশনটি নিক্ষেপ না করে সত্য / মিথ্যা ফিরিয়ে দেবে (সহজ তবে কম শক্তিশালী):
import os
def is_non_zero_file(fpath):
return os.path.isfile(fpath) and os.path.getsize(fpath) > 0
os.path.getsize()
os.path.isfile(fpath)
এবং os.path.getsize(fpath)
, যে ক্ষেত্রে প্রস্তাবিত ফাংশন একটি ব্যতিক্রম তুলব।
OSError
পরিবর্তে চেষ্টা করা এবং ধরা আরও ভাল , অন্য মন্তব্যে প্রস্তাবিত মত ।
TypeError
ইনপুট এফপ্যাথ হলে ইভেন্টটি উত্থাপিত হবে তা ধরতে হবে None
।
যদি কোনও কারণে আপনার কাছে ইতিমধ্যে ফাইলটি খোলা থাকে তবে আপনি এটি চেষ্টা করতে পারেন:
>>> with open('New Text Document.txt') as my_file:
... # I already have file open at this point.. now what?
... my_file.seek(0) #ensure you're at the start of the file..
... first_char = my_file.read(1) #get the first character
... if not first_char:
... print "file is empty" #first character is the empty string..
... else:
... my_file.seek(0) #first character wasn't empty, return to start of file.
... #use file now
...
file is empty
ঠিক আছে তাই আমি ভোগের জন্য ঘোস্টডোগ 74 এর উত্তর এবং মন্তব্যগুলিকে একত্রিত করব ।
>>> import os
>>> os.stat('c:/pagefile.sys').st_size==0
False
False
মানে একটি খালি নয় ফাইল।
সুতরাং আসুন একটি ফাংশন লিখুন:
import os
def file_is_empty(path):
return os.stat(path).st_size==0
আপনি যদি পাইথন 3 ব্যবহার করে থাকেন তবে আপনি পদ্ধতিটি ব্যবহার করে তথ্য pathlib
অ্যাক্সেস করতে পারবেন , যার বৈশিষ্ট্য রয়েছে (বাইটগুলিতে ফাইলের আকার):os.stat()
Path.stat()
st_size
>>> from pathlib import Path
>>> mypath = Path("path/to/my/file")
>>> mypath.stat().st_size == 0 # True if empty
আপনার যদি ফাইল অবজেক্ট থাকে তবে
>>> import os
>>> with open('new_file.txt') as my_file:
... my_file.seek(0, os.SEEK_END) # go to end of file
... if my_file.tell(): # if current position is truish (i.e != 0)
... my_file.seek(0) # rewind the file for later use
... else:
... print "file is empty"
...
file is empty
একটি গুরুত্বপূর্ণ গোটচা: একটি সংকুচিত খালি ফাইলটি পরীক্ষা করা getsize()
বা stat()
ফাংশন করার সাথে শূন্য নয় বলে মনে হবে :
$ python
>>> import os
>>> os.path.getsize('empty-file.txt.gz')
35
>>> os.stat("empty-file.txt.gz").st_size == 0
False
$ gzip -cd empty-file.txt.gz | wc
0 0 0
সুতরাং আপনার পরীক্ষা করা উচিত ফাইলটি সংকুচিত হয়েছে কিনা তা পরীক্ষা করা উচিত (উদাহরণস্বরূপ ফাইলের নাম প্রত্যয় পরীক্ষা করুন) এবং যদি তা হয় তবে এটি জামিন বা অস্থায়ী স্থানে সঙ্কুচিত করুন, সঙ্কুচিত ফাইলটি পরীক্ষা করুন এবং তারপরে এটি মুছে ফেলা হবে।
যেহেতু আপনি খালি ফাইল কী তা সংজ্ঞায়িত করেননি। কেউ কেউ কেবল ফাঁকা ফাইলও একটি ফাঁকা ফাইল বিবেচনা করতে পারে। সুতরাং আপনি যদি আপনার ফাইলটিতে কেবল ফাঁকা লাইন (কোনও শ্বেতস্থান অক্ষর, '\ r', '\ n', 'contains t') রয়েছে কিনা তা পরীক্ষা করতে চান তবে নীচের উদাহরণটি অনুসরণ করতে পারেন:
Python3
import re
def whitespace_only(file):
content = open(file, 'r').read()
if re.search(r'^\s*$', content):
return True
ব্যাখ্যা করুন: উপরের উদাহরণটি content
ফাইলের সামগ্রী ( ) এর সাথে মেলে নিয়মিত অভিব্যক্তি (রেজেক্স) ব্যবহার করে।
বিশেষত: এর রেজেক্সের জন্য: ^\s*$
পুরো অর্থ হিসাবে যদি ফাইলটিতে কেবল ফাঁকা লাইন এবং / অথবা ফাঁকা স্থান থাকে।
- ^
একটি লাইন শুরুতে অবস্থান দাবি
- \s
কোনো হোয়াইটস্পেস অক্ষর মিলে যায় (সমান [পান \ r \ n \ n টি \ চ \ বনাম])
- *
কোয়ান্টিফায়ার - শূন্য এবং সীমাহীন বার মধ্যে খেলা, সম্ভব হিসাবে অনেক বার হিসাবে প্রয়োজন ফেরৎ হিসাবে ( লোভী)
- $
একটি লাইনের শেষে অবস্থান জোর করে
আপনি যদি সিএসভি ফাইলটি খালি কিনা তা পরীক্ষা করতে চান তবে ....... এটি চেষ্টা করে দেখুন
with open('file.csv','a',newline='') as f:
csv_writer=DictWriter(f,fieldnames=['user_name','user_age','user_email','user_gender','user_type','user_check'])
if os.stat('file.csv').st_size > 0:
pass
else:
csv_writer.writeheader()
stat.ST_SIZE
6