我有一个包含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)
错误:列表不属性写入.
您当前的代码将所有内容加载到内存中,这是非常不必要的,然后它会在不合适的位置创建列表,从而导致错误.试试这个:
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)
这将只是将每行写入每个文件.查找我用来进行索引的枚举函数.
完成此操作后,您仍然需要编写解析逻辑以将每一行转换为一系列行...我不打算在这里为您执行此操作,因为您的原始代码也没有真正的逻辑.
我假设您想要读取 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)
| 归档时间: |
|
| 查看次数: |
26285 次 |
| 最近记录: |