"使用readlines()和for循环删除第一行后,Python不会重写文件"

2024-10-02 14:24:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python编写一个web抓取脚本,从文本文件的第一行提取一个“ID”,并将其附加到一个部分URL;然后从该URL下载一个图像。一切正常,但是当我使用第三个函数运行它时(它包含下载的实际代码-这很好),它不会通过删除第一行来更新文本文件。在

我确信我在这里遗漏了一些东西,任何帮助都将不胜感激。在

def delete_used_id():
    # open and save all ids
    id_file_r = open('C:/Users/my.name/Documents/IDs.txt', 'r')
    lines = id_file_r.readlines()
    first_line_unf = str(lines[0])[3:]
    first_line = first_line_unf.strip()
    id_file_r.close()
    # reopen in write mode
    id_file_w = open('C:/Users/my.name/Documents/IDs.txt','w')
    for unused_id in lines:
        if unused_id != first_line:
            id_file_w.write(unused_id)
    id_file_w.close()
    print("Deleting used ID: " + first_line)

def get_id_from_file():
    id_file = open('C:/Users/my.name/Documents/IDs.txt', 'r')
    # slice the first 3 chars off of the string
    farmer_id_unf = id_file.readline()[3:]
    farmer_id = farmer_id_unf.strip()
    print("Getting Farmer ID: " + farmer_id)
    return farmer_id

Tags: nametxtididsmylineopenusers
1条回答
网友
1楼 · 发布于 2024-10-02 14:24:12

感谢Jornsharpe和nerdwaller:

回答:

def delete_used_id():
    # open and save all ids
    id_file_r = open('C:/Users/my.name/Documents/IDs.txt', 'r')
    lines = id_file_r.readlines()
    first_line_unf = lines[0][3:]
    first_line = first_line_unf.strip()
    id_file_r.close()
    # reopen in write mode
    id_file_w = open('C:/Users/my.name/Documents/IDs.txt','w')
    for line in lines[1:]:
        id_file_w.write(line)
    id_file_w.close()
    print("Deleting used ID: " + first_line)

相关问题 更多 >