我想把一个文件分成5个文件,第一行存入part1,第二行存入part2
是这样的
#1 #6 ... to part1
#2 #7 ... to part2
#3 #8 ... to part3
#4 #9 ... to part4
#5 #10 ... to part5
我需要为 file1 到 file5 创建五个文件句柄,但似乎我不能使用 (part+i)
作为文件句柄,我不知道我应该转换哪种类型到 ?字符串?
如何解决?谢谢
这是我的代码
sys.argv[1] is source file
sys.argv[2] is the directory to store
sys.argv[3] is the number of subfile
import os
import sys
for i in range(1,sys.argv[3]+1):
(part+i) = open(os.path.join(sys.argv[2],"part"+i),"w")
source = open(sys.argv[1],"r")
for idx,line in enumerate(source.readlines(),1):
position = idx % int(sys.argv[3])
if position == 0:
(part+sys.argv[3]).write(line)
else:
(part+idx).write(line)
for i in range(1,sys.argv[3]+1):
(part+i).close()
source.close()
最佳答案
您的问题与文件句柄无关,也与尝试动态创建变量无关。
答案是:不要那样做。 Keep your data out of your variable names .
改用字典或列表;下面的列表理解创建了一个打开的文件对象列表:
files = [open(os.path.join(sys.argv[2], "part{}".format(i + 1)), "w")
for i in range(sys.argv[3])]
现在您可以寻址 files[0]
、files[1]
更好的是,遍历此列表以访问所有打开的文件对象 files[- 1]
让您轻松访问最后一个文件对象等。
您的循环现在看起来也简单多了,因为现在您可以使用基于 0 的索引:
for idx, line in enumerate(source.readlines()):
position = idx % int(sys.argv[3])
files[position].write(line)
关于python - 如何在运行时在 python 中创建文件句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19357465/