一次写多个文件

shr*_*eya 2 python file

我有一个包含196列表的文件,我想创建新的196个输出文件,并将每个列表写入一个新文件,这样我将有196个输出文件,每个包含1个输入数据列表这里是输入文件:

"['128,129', '116,118', '108,104', '137,141', '157,144', '134,148', '138,114', '131,138', '248,207', '208,247', '246,248', '101,106', '131,115', '119,120', '131,126', '138,137', '132,129']"
"['154,135', '151,147', '236,244', '243,238', '127,127', '125,126', '122,124', '123,126', '127,129', '122,121', '147,134', '126,132', '128,137', '233,222', '222,236', '125,126']"
Run Code Online (Sandbox Code Playgroud)

.....这里例如,我只给出了2个列表,但总共有196个列表.输出应该是:

档案1:

128,129
116,118
108,104
Run Code Online (Sandbox Code Playgroud)

file2:

154,135
151,147
236.244
Run Code Online (Sandbox Code Playgroud)

当前代码:

fn = open("/home/vidula/Desktop/project/ori_tri/inpt.data","r")
fnew = fn.read()
fs = fnew.split('\n')
for value in fs:
    f = [open("/home/vidula/Desktop/project/ori_tri/input_%i.data" %i,'w') for i in range(len(list_of_files))]
    f.write(value)
    f.close()
Run Code Online (Sandbox Code Playgroud)

错误:列表不属性写入.

Joh*_*nck 9

您当前的代码将所有内容加载到内存中,这是非常不必要的,然后它会在不合适的位置创建列表,从而导致错误.试试这个:

fn = open("/home/vidula/Desktop/project/ori_tri/inpt.data","r")
for i, line in enumerate(fn):
    f = open("/home/vidula/Desktop/project/ori_tri/input_%i.data" %i,'w')
    f.write(line)
    f.close()
Run Code Online (Sandbox Code Playgroud)

这将只是将每行写入每个文件.查找我用来进行索引的枚举函数.

完成此操作后,您仍然需要编写解析逻辑以将每一行转换为一系列行...我不打算在这里为您执行此操作,因为您的原始代码也没有真正的逻辑.


pra*_*hus 0

我假设您想要读取 196 个文件,然后将数据(经过一些修改)写入新的 196 个文件。如果您使用映射和减少(函数式编程),它可以做您想做的事。尽管问题中没有太多解释,但我无法提供太多帮助。

def modify(someString):
    pass # do processing

def newfiles(oldfilename): return '%s.new.txt'%(oldfilename) # or something 

filenames = ('a', 'b', 'c', 'd', ....) 
handles = [(open(x, 'r'), open(newfile(x), 'w')) for x in filenames] # not using generator
tmp = [y[1].write(modify(y[0].read())) for y in handles) 
Run Code Online (Sandbox Code Playgroud)