作为新手我需要你的帮助。我在尝试重命名txt文件列表中的列时遇到了一个问题。 在重命名它之前,我删除了空格
with open("smpl_list.txt", "r") as m, open ("smpl.txt","w") as n:
sys.stdout=n
for line in m:
print line.strip()
导入熊猫后重命名列
import pandas as pd
df=pd.read_csv("smpl.txt", sep=" ", header=None, names=["a","b","c","d"])
print (df)
但我不断得到“I/O操作关闭文件”的错误。据我所知,用block自动关闭文件,但问题出在哪里,我真的一点也看不出来。你知道吗
编辑:这是我的代码,贡献为@COLDSPEED
with open("smpl_list.txt", "r") as m, open ("smpl.txt","w") as n:
for line in m:
n.write(line.strip()+"\n")
第二部分是列重命名
import pandas as pd
with open ("smp.txt", "w") as r:
df=pd.read_csv("smpl.txt", sep=" ", header=None, names=["a","b","c","d"])
print>> r, df
列表的最终结果不带左空格(以前有)和列名
将
sys.stdout
更改为对print执行重定向是错误的,因为这样会造成不可逆转的损害。你知道吗发生此问题的原因是您将其重新分配给上下文管理器中的文件指针。退出
with
块后,管理器自动关闭,因此sys.stdout
指向一个关闭的文件,这就是为什么会出现此错误。你知道吗你有两个选择。第一种选择是通过重新加载
sys
来解决问题。你可以用它来做第二个,也是更好的选择(我更喜欢)是根本不要陷入这种情况。Python2的print语句有一个语法,允许您重定向而无需跳转:
或者,稍微好一点:
相关问题 更多 >
编程相关推荐