我只是在python上制作gzip的消息.
import gzip
f=gzip.open('Onlyfinnaly.log.gz','rb')
file_content=f.read()
print file_content
Run Code Online (Sandbox Code Playgroud)
我在屏幕上没有输出.作为python的初学者,我想知道如果我想在gzip文件中读取文件的内容该怎么办.谢谢.
我想检查一个文件是否存在,如果存在,是否为空.
如果文件不存在,我想退出程序并显示错误消息.
如果文件为空,我想退出不同的错误消息.
否则我想继续.
我一直在阅读使用Try:Except:但我不确定如何构造代码'Pythonly'来实现我追求的目标?
感谢您的所有回复,我使用以下代码:
try:
if os.stat(URLFilePath + URLFile).st_size > 0:
print "Processing..."
else:
print "Empty URL file ... exiting"
sys.exit()
except OSError:
print "URL file missing ... exiting"
sys.exit()
Run Code Online (Sandbox Code Playgroud) 我有两段代码,它们都是为了做同样的事情 - 坐在一个循环中,直到写完文件.它们主要用于通过FTP/SCP进入的文件.
一个版本的代码使用它os.stat()[stat.ST_SIZE]:
size1,size2 = 1,0
while size1 != size2:
size1 = os.stat(file_name)[stat.ST_SIZE]
time.sleep(300)
size2 = os.stat(file_name)[stat.ST_SIZE]
Run Code Online (Sandbox Code Playgroud)
另一个版本用于os.path.getsize():
size1,size2 = 0,0
while True:
size2 = os.path.getsize(file_name)
if size1 == size2:
break
else:
time.sleep(300)
size1 = size2
Run Code Online (Sandbox Code Playgroud)
我已经看到多个实例,其中使用第一种方法报告,当文件实际上仍在增长时,大小相同.是否有一些潜在的原因导致os.stat()错误报告而os.path.getsize()不会?我没有看到任何错误或异常.
我将一个文件夹中的所有文件逐个读入DataFrame,然后检查它们的某些条件.有几千个文件,我想在文件为空时让pandas引发异常,这样我的读者功能就会跳过这个文件.
我有类似的东西:
class StructureReader(FileList):
def __init__(self, dirname, filename):
self.dirname=dirname
self.filename=str(self.dirname+"/"+filename)
def read(self):
self.data = pd.read_csv(self.filename, header=None, sep = ",")
if len(self.data)==0:
raise ValueError
class Run(object):
def __init__(self, dirname):
self.dirname=dirname
self.file__list=FileList(dirname)
self.result=Result()
def run(self):
for k in self.file__list.file_list[:]:
self.b=StructureReader(self.dirname, k)
try:
self.b.read()
self.b.find_interesting_bonds(self.result)
self.b.find_same_direction_chain(self.result)
except ValueError:
pass
Run Code Online (Sandbox Code Playgroud)
我正在搜索某些条件的常规文件如下所示:
"A/C/24","A/G/14","WW_cis",,
"B/C/24","A/G/15","WW_cis",,
"C/C/24","A/F/11","WW_cis",,
"d/C/24","A/G/12","WW_cis",,
Run Code Online (Sandbox Code Playgroud)
但不知怎的,我不会被ValueError提升,我的函数正在搜索空文件,这在我的结果文件中给了我很多"空数据框..."行.如何让程序跳过空文件?
有没有办法检查Python中的文本文件是否为空而不使用操作系统?
到目前为止我尝试过的
x = open("friends.txt")
friendsfile = x.readlines()
if friendsfile == None
Run Code Online (Sandbox Code Playgroud)
但我不认为这是正确的方法.
我有一个可能是空的文件,也可能不是空的。目标是从文件中读取一个 json 对象,附加到它,然后将它写回文件。但是,在文件为空的情况下, json.load() 会失败。如何解决此问题而无需事先检查文件是否为空?
这是我当前的代码:
with open(filename, 'a+') as infile:
old_data = json.load(infile)
data = old_data + obj
with open(filename, 'w') as outfile:
json.dump(data, outfile)
Run Code Online (Sandbox Code Playgroud)
错误信息是:
File "<stdin>", line 3, in <module>
File "/usr/lib/python3.6/json/__init__.py", line 299, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 …Run Code Online (Sandbox Code Playgroud)