Python-检查昨天的文件是否存在
我正在尝试编写一个Python脚本,检查是否存在前一天的文件。在本例中,我试图确定文件myFile_20180306是否与C:\myFolder\目录一起存在 我遇到的问题是,在for循环中,它打印错误:myFile_20180306不存在!在控制台中多次 如果文件存在或不存在,如何重新编写此脚本以仅显示一次打印行Python-检查昨天的文件是否存在,python,Python,我正在尝试编写一个Python脚本,检查是否存在前一天的文件。在本例中,我试图确定文件myFile_20180306是否与C:\myFolder\目录一起存在 我遇到的问题是,在for循环中,它打印错误:myFile_20180306不存在!在控制台中多次 如果文件存在或不存在,如何重新编写此脚本以仅显示一次打印行 #!/usr/bin/python import os, sys from datetime import date, timedelta yesterday = date.tod
#!/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!'
基兰
谢谢你澄清你的问题。如注释中所述,循环的问题是,对于目录中的每个文件,代码将根据适用于该文件的文件打印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为您提供一个目录中所有文件/目录名的列表。然后,您可以检查所需的元素是否在列表中,而无需执行第二个循环-这对于流程来说更有效,而且代码总量更少
根据元素是否在列表中,显示正确的消息
希望这有帮助你有问题吗?这里没有问题!顺便说一句,您的格式与示例文件名不匹配for和if语句有什么问题?抱歉!更新了问题:-对于每个单独的文件,您正在确定您的文件是否存在。因此,如果您当前正在查看的文件不是您搜索的文件,则通常会声明您的文件根本不存在。您的逻辑需要是在找到文件时声明找到的文件,并且只有在没有找到文件的情况下耗尽循环后,才声明该文件不存在。提示:found=False,…,if…:found=True。