【发布时间】:2016-09-17 00:43:15
【问题描述】:
所以我浏览了很多,但我似乎无法打开我的文本文件,所以我可以开始操作它。
我用同一个文件保存了我的程序:第一行没有返回错误:
fpath= r'/Users/veggiepunk1363/Desktop/geoproccessing/file_list.txt'
with open(fpath) as f_in:
dates= f_in.read()
f_in.close()
但是现在我的文件打开了吗?文本文件(file_list.txt)是:
3B43.20000101.7.tif
3B43.20000201.7.tif
3B43.20000301.7.tif
3B43.20000401.7.tif
3B43.20000501.7.tif...
等等,所以现在我需要分配日期(一月、二月、三月等)而不是数字,但我没有使用任何没有“”的东西,所以我有点迷茫,虽然我可以在 CSV 上找到很多我无法在 txt 文件中找到我需要的文件,因此非常感谢任何参考。
谢谢!
ps。如果有人知道如何将我的硬盘名称更改为 veggiepunk1363 以外的名称,请告诉我!哈哈
我的新代码:
f = open('/Users/veggiepunk1363/Desktop/geoproccessing/file_listmaster3.txt','r')
filedata = f.read()
f.close()
Jan = filedata.replace("20001","2000Jan")
Feb = filedata.replace("20002","2000Feb")
Mar= filedata.replace("20003","2000Mar")
Apr= filedata.replace("20004","2000Apr")
May= filedata.replace("20005","2000May")
Jun= filedata.replace("20006","2000Jun")
Jul= filedata.replace("20007","2000Jul")
Aug= filedata.replace("20008","2000Aug")
Sep= filedata.replace("20009","2000Sep")
Oct= filedata.replace("20010","2000Oct")
Nov= filedata.replace("20011","2000Nov")
Dec= filedata.replace("20012","2000Dec")
f = open('/Users/veggiepunk1363/Desktop/geoproccessing/file_listmaster3.txt','w')
f.write(Jan)
f.write(Feb)
f.write(Mar)
f.write(Apr)
f.write(May)
f.write(Jun)
f.write(Jul)
f.write(Aug)
f.write(Sep)
f.write(Oct)
f.write(Nov)
f.write(Dec)
print ('The dates have been reformatted')
f.close()
我知道这是做我想做的事情的漫长道路,但我认为它仍然有效......它没有。它使我的 txt 文件的大小增加了三倍,而且看起来一切都重复了?不太清楚发生了什么。
【问题讨论】:
-
你运行了吗?您的文件在
with块内打开,并在块退出时自动关闭(因此不需要dates= f_in.close())。您的代码将文件的全部内容读入dates。通常使用 for 循环逐行读取数据(例如,for line in f_in:而不是read()。尝试构建一个循环来处理这些行,然后提交一个示例。 -
旁注:当您使用
with语句时,对close的显式调用是不必要且多余的(这就是为什么您使用with语句,所以资源清理是自动的,不会被意外省略/跳过)。 -
已编辑...我弄清楚了打开/关闭,但在编辑我的数据时出现了意外的结果。