Python 结构检查以查看文件是否包含数据
我想检查一个文件里面是否有数据,如果它显示了该文件里面的内容,如果没有,则以“文件中没有任何内容”退出。我正在使用Fabric 1.2在远程服务器上执行此操作 我正在尝试:Python 结构检查以查看文件是否包含数据,python,bash,fabric,Python,Bash,Fabric,我想检查一个文件里面是否有数据,如果它显示了该文件里面的内容,如果没有,则以“文件中没有任何内容”退出。我正在使用Fabric 1.2在远程服务器上执行此操作 我正在尝试: def test(): run("cat myfile.txt | awk '{print $1}' > /dir/newfile.txt") if run("test -s /dir/newfile.txt || cat /dir/newfile.txt"):
def test():
run("cat myfile.txt | awk '{print $1}' > /dir/newfile.txt")
if run("test -s /dir/newfile.txt || cat /dir/newfile.txt"):
else run("echo Nothing in the file")
我知道这不是最好的方法,而且我知道Python使用os.path.getsize(path)来实现类似的目的。你能帮忙吗 有一个更简单的命令来执行此操作,它不需要将任何内容保存到文件中:
file 'the-filename' | grep 'the-filename'
因此,代码是:
if run("file 'the-filename' | grep 'the-filename'", warn_only=True).succeeded:
print("The file 'the-filename' is empty.")
else:
print("The file 'the-filename' is not empty.")
如果命令成功,则返回值的属性为True
,当grep
与字符串匹配时(即文件为空时)会发生这种情况
在fabric
的文档中搜索,它似乎没有提供类似于os.path.getsize
的功能,因此您可能无法使用run
调用命令
另一种方法是使用统计文件名--format=%s | grep'^0$”
并检查是否成功
,这应该可以:
@task
def empty():
some_file = 'some_file'
run(('if [ -s "%s" ]; then'
' cat "%s"; '
'else'
' echo "EMPTY FILE"; '
'fi') % (some_file, some_file))
我在Redhat Unix系统上对其进行了测试,只在一次调用中使用了bash if语句和cat。
file如果文件没有数据,文件名
将打印文件名:empty
。将它与grep
放在一起,如果运行(“归档文件名”| grep“文件名:empty”):是的,应该已经看到了。如果出现语法错误,如何运行else语句?谢谢谢谢,但这个答案只与织物1.5x有关-我使用的是1.2。warn_only=True在1.2版上不可用。但是我升级到了1.5版,这个答案确实有帮助,所以你可以得到我的投票。