मेरे पास एक टेक्स्ट फाइल है।
मैं कैसे जांच सकता हूं कि यह खाली है या नहीं?
मेरे पास एक टेक्स्ट फाइल है।
मैं कैसे जांच सकता हूं कि यह खाली है या नहीं?
जवाबों:
>>> 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)
, जिस स्थिति में प्रस्तावित फ़ंक्शन अपवाद को बढ़ाएगा।
TypeError
जो घटना में उठाया जाएगा कि इनपुट fpath है 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
ठीक है तो मैं सिर्फ मनोरंजन के लिए ghostdog74 के उत्तर और टिप्पणियों को मिलाऊंगा ।
>>> 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
यदि आप Python3 का उपयोग कर रहे हैं तो आप विधि का उपयोग करके जानकारी प्राप्त कर 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', 't') हैं , तो आप नीचे दिए गए उदाहरण का अनुसरण कर सकते हैं:
python3
import re
def whitespace_only(file):
content = open(file, 'r').read()
if re.search(r'^\s*$', content):
return True
समझाएं: ऊपर दिया गया उदाहरण content
फ़ाइल की सामग्री ( ) से मेल खाने के लिए नियमित अभिव्यक्ति (रेगेक्स) का उपयोग करता है ।
विशेष रूप से: के regex के लिए: ^\s*$
एक पूरे साधन के रूप में अगर फ़ाइल में केवल रिक्त लाइनें और / या रिक्त स्थान हैं।
- ^
एक पंक्ति की शुरुआत में स्थिति का पता लगाता है
- \s
किसी भी व्हाट्सएप चरित्र से मेल खाता है ([\ r \ n \ t \ f \ v] के बराबर)
- *
क्वांटिफायर - शून्य और असीमित समय के बीच मेल खाता है, जितनी बार संभव हो, वापस दे रहा है (आवश्यकतानुसार) लालची)
- $
एक पंक्ति के अंत में स्थिति का दावा करता है
अगर आप देखना चाहते हैं कि csv फ़ाइल खाली है या नहीं ....... यह कोशिश करें
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 के बजाय