gpt4 book ai didi

python - 重新打开文件以进行追加

转载 作者:行者123 更新时间:2023-11-28 16:27:46 26 4
gpt4 key购买 nike

我对文件输出有些不理解。我想打开一个文件,写入它,关闭它,然后重新打开它,追加,关闭。

我不想在脚本运行的整个过程中一直打开文件。

我在文件中看到的只是* Start *。我想查看失败消息和完成 消息。我该怎么做?

log_failed_download_file = open(log_failed_download_filename, "w")
log_failed_download_file.write ("\n*** Start ***");
log_failed_download_file.close()

# other logic (os.chdir)

for x in range(start_x, end_x + 1):
# do stuff, possibly set download_error to False
if (download_error == False):
log_failed_download_file = open(log_failed_download_filename, "a")
log_failed_download_file .write(url)
log_failed_download_file .close()

# other logic

log_failed_download_file = open(log_failed_download_filename, "a")
log_failed_download_file.write ("\n\nComplete - %r" % str(datetime.datetime.now().strftime('%m/%d/%Y %H:%M:%S')))
log_failed_download_file.close()

编辑:我添加了 os.chdir 在“其他逻辑”部分,因为这是问题的根源。

最佳答案

如果 log_failed_download_filename 只是文件名,则更改当前工作目录将更改您写入的位置。因此,您会将一半日志写入一个位置,然后在调用 os.chdir 后将其余部分写入另一个位置。

为避免这种情况,您可以将文件名放入整个文件路径中:

log_path = os.path.abspath(log_failed_download_filename)

这给出了文件的绝对路径。来自 os.path.abspath 的文档:

Return a normalized absolutized version of the pathname path. On most platforms, this is equivalent to calling the function normpath() as follows: normpath(join(os.getcwd(), path)).

一旦调用 os.chdiros.getcwd 可能会返回不同的内容,因此 abspath 也会不同。

请注意,现代 Python 使用 with 上下文管理器打开文件。这会自动为您关闭文件:

with open(log_path, 'w') as log:
log.write("\n*** Start ***")

# other logic (os.chdir)

for x in range(start_x, end_x + 1):
# do stuff, possibly set download_error to False
if not download_error:
with open(log_path, 'a') as log:
log.write(url)

# other logic

with open(log_path, 'a') as log:
log.write("\n\nComplete - %r" %
str(datetime.datetime.now().strftime('%m/%d/%Y %H:%M:%S')))

关于python - 重新打开文件以进行追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35020978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com