我正在尝试编写一个Python脚本,用于检查前一天是否存在文件。在这个例子中,我试图建立文件" myFile_20180306"与C:\ myFolder \目录一起存在。
我遇到的问题是在for循环中打印" ERROR:myFile_20180306不存在!"在控制台中多次。
如果文件存在与否,如何重写此脚本以仅显示一次打印行?
#!/usr/bin/python
import os, sys
from datetime import date, timedelta
yesterday = date.today() - timedelta(1)
yesterdaysDate = yesterday.strftime('%Y%m%d')
yesterdaysFile_myFile = yesterday.strftime('myFile_%Y%m%d.csv')
for subdir, dirs, files in os.walk('C:\myFolder'):
for file in files:
if file == yesterdaysFile_myFile:
print 'OKAY: ',yesterdaysFile_myFile,' is available.'
else:
print 'ERROR: ',yesterdaysFile_myFile,' does not exist!'
答案 0 :(得分:0)
基兰,
感谢您澄清您的问题。如评论中所述,您的循环问题是,对于目录中的EACH文件,您的代码将打印ok或错误消息,具体取决于哪个适用于该文件。据推测,这大多是错误。
考虑这种方法:
#!/usr/bin/python
import os, sys
from datetime import date, timedelta
yesterday = date.today() - timedelta(1)
yesterdaysDate = yesterday.strftime('%Y%m%d')
yesterdaysFile_myFile = yesterday.strftime('myFile_%Y%m%d.csv')
file_names = os.listdir('C:\myFolder')
if yesterdaysFile_myFile in file_names:
print("OKAY: {0} is available".format(yesterdaysFile_myFile))
else:
print('ERROR: {0} does not exist!".format(yesterdaysFile_myFile))
os.listdir()为您提供目录中所有文件/目录名称的列表。然后,您可以在不进行第二次循环的情况下检查所需元素是否在列表中 - 这对于流程更有效,而且总代码更少。
根据您的元素是否在列表中,您将显示正确的消息。
希望这有帮助