我有一个简单的Python脚本,可以从服务器下载过时的文件。该脚本读取日志文件以查看该文件是否已下载,然后决定下载该文件或跳过该文件。
如果文件不在日志文件中(意味着尚未下载),则下载文件并将文件名写入日志。当脚本再次运行时,它就是这样,它不会再次下载文件。
如何使用
检查日志中是否存在该文件f = open('testfile.txt', 'r+')
for line in f:
if line.rstrip() == mysales + date + file:
mysalesdownload = "TRUE"
elif line.rstrip() == myproducts + date + file:
myproductsdownload = "TRUE"
else:
continue
mysales + date + file看起来像 - 日志文件中的mysales_2014-05-01.txt。
现在的问题是我想在文件中添加分隔符(;)和下载日期。下载的日期告诉我脚本何时下载了数据。
f.write( mysales + date + file + ";" + datetime.date.today() + "\n");
然而,这会让我现在阅读日志文件。日期是动态的,数据会运行一夜。所以,请记住这条线现在看起来像这样:
mysales_2014-05-01.txt;2014-05-02
如果脚本运行过夜,我怎么只读取分号,所以我不会两次下载同一个文件?
答案 0 :(得分:1)
更改此行:
if line.rstrip() == mysales + date + file:
要:
if line.rstrip()[:line.rstrip().find(';')] == mysales + date + file:
等等。
答案 1 :(得分:0)
如果您只是想查看您的文件是否在日志文件中,您可以使用in
条件:
current_sales = '{}{}{}'.format(my_sales, date, file)
current_products = '{}{}{}'.format(my_products, date, file)
with open('test_file.txt', 'r+') as file:
for line in file:
if current_file in line:
my_sales_download = 'TRUE'
elif current_products in line:
my_products_download = 'TRUE'
您的最终else
声明是多余的,可以取出。此外,我认为检查my_sales_download
和my_products_download
TRUE
是否break
是明智的。如果是这种情况,您可以从for循环中{{1}}。