python-2.7 - 保存文件而不在 Python 中关闭它
问题描述
假设我有一个我正在迭代的文件字典。我正在对每个文件进行一些处理,然后将其写入报告(注意:不使用csv
mod)。
file_list = ['f1', 'f2', 'f3', 'f4']
report = "C:/reports/report_%s"%(timestamp)
r = open(report, "w')
如果 f3 中发生的事情在脚本完成之前使脚本崩溃,会发生什么情况。我可以try-catch
用来处理错误,但我不想只关闭报告。也许我希望脚本继续。脚本运行时可能出现电源故障。也许有多个try-catch
语句,我不想为每个错误关闭。本质上,我只想保存文件而不在列表的每次迭代中关闭它,这样如果发生崩溃,我仍然可以检索到该点之前写入报告的数据。我怎样才能做到这一点?我不能简单地做report.save()
,对吧?我考虑过使用flush()
with ,os.fsync()
如另一个问题中所述,但我不能 100% 确定这适用于我的场景。关于如何在这里实现我的目标有什么建议吗?
try:
....do stuff...
report.write(<stuff_output> + "\n")
try:
....do more stuff....
report.write(<stuff_output> + "\n")
except:
continue
report.close()
except Exception as e:
pass
解决方案
看来我可以通过简单地在正确的范围内使用 and 并将 try 放在flush()
外部来解决这个问题。因此,即使它尝试并失败,它也会通过或继续并在最后关闭:os.fsync()
r.close()
try:
for item in file_list:
try:
r.write("This is item: " + item + "\n")
except:
r.flush()
os.fsync(r)
continue
except Exception as e:
pass
r.close()
这将始终打印"This is item: f1", "This is item: f2", "This is item: f3"
到报告中。
推荐阅读
- sql - regexp_replace 替换特定值
- php - 如何从 php 中的多维关联数组中检索特定值?
- shell - 通过 ssh 调用时无法在 shell 脚本中执行 nohup 命令
- arrays - Vue 突变变更实例(MyArray 到 Array)
- unix - diff unix 如何在输出中显示源文件的行号
- qt - /usr/lib/x86_64-linux-gnu/libQt5Core.so.5:找不到版本“Qt_5.12”
- r - “iden”列应包含组中每个成员的个人编号
- google-apps-script - Google Docs Scripts:如何从一个文档中复制列表并用它替换另一个文档中的列表?
- java - 如何使用 JAVA 从 Azure 的 Cosmos DB 集合中获取所有文档?
- erlang - 如何在 shell 中使用 rebar3 创建 Erlang 应用程序?