如何使用line.rstrip只读取部分行

时间:2014-06-02 17:48:42

标签: python python-2.7

我有一个简单的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 

如果脚本运行过夜,我怎么只读取分号,所以我不会两次下载同一个文件?

2 个答案:

答案 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_downloadmy_products_download TRUE是否break是明智的。如果是这种情况,您可以从for循环中{{1}}。