将两件事放在同一行上,然后写入文件
Spacing Two Things On The Same Line Then Writing To File
我正在尝试在同一行的两个不同文件中写两件事
一个不同的文件(即有 3 个文件正在使用。2 个已经有项目和一个新的)
fin=open("/Users/battledrum/Desktop/review2.txt")
fin1=open("/Users/battledrum/Desktop/review3.txt")
fout=open("/Users/battledrum/Desktop/HeightVStime.txt","w")
a=list()
for i in range(35):
fout.write(fin.read()+'\t'+fin1.read())
print(len(a))
这是我希望在新文件中看到的结果:
1.34, 1.54
1.80, 1.39
1.25 , 1.68
1.69 , 1.83
与其假设每个文件中有一定数量的行,不如这样:
with open("/Users/battledrum/Desktop/HeightVStime.txt","w") as fout:
with open("/Users/battledrum/Desktop/review2.txt") as fin1:
with open("/Users/battledrum/Desktop/review3.txt") as fin2:
fout.writelines([(', '.join((x.rstrip('\n'),y))) for x,y in zip(fin1,fin2)])
zip
将合并 fin1
和 fin2
之间的行,因为我们可以将每个文件对象视为一个可迭代对象,如果其中一个文件较长,则将丢弃剩余的行比另一个。
假设文件长度相同
with open(fin) as f1:
with open(fin1) as f2:
num1 = [l.strip() for l in f1.readlines()]
num2 = [l.strip() for l in f2.readlines()]
with open(fout,'w+') as out:
for i in range(0,len(num1)):
out.write(','.join([num1[i], num2[i]])+'\n')
这里有很多错误:
file.read()
获取文件的全部内容,因此您正在写入(整个第一个文件)+ tab +(整个第二个文件)您要逐行读取的位置.
您永远不会附加到 a
,因此 len(a)
将始终为 0。
您在 a
中想要的内容不是很清楚 - 逐行文件内容?
我想你想要更像
的东西
HEIGHT_FILE = "/Users/battledrum/Desktop/review2.txt"
TIME_FILE = "/Users/battledrum/Desktop/review3.txt"
OUTPUT_FILE = "/Users/battledrum/Desktop/HeightVStime.txt"
def main():
# load data pairs
with open(HEIGHT_FILE) as hf, open(TIME_FILE) as tf:
hts = [(height.strip(), time.strip()) for height,time in zip(hf, tf)]
# write output
with open(OUTPUT_FILE, "w") as outf:
lines = ("{}\t{}".format(h, t) for h,t in hts)
outf.write("\n".join(lines))
print("{} lines written".format(len(hts)))
if __name__=="__main__":
main()
我正在尝试在同一行的两个不同文件中写两件事 一个不同的文件(即有 3 个文件正在使用。2 个已经有项目和一个新的)
fin=open("/Users/battledrum/Desktop/review2.txt")
fin1=open("/Users/battledrum/Desktop/review3.txt")
fout=open("/Users/battledrum/Desktop/HeightVStime.txt","w")
a=list()
for i in range(35):
fout.write(fin.read()+'\t'+fin1.read())
print(len(a))
这是我希望在新文件中看到的结果:
1.34, 1.54
1.80, 1.39
1.25 , 1.68
1.69 , 1.83
与其假设每个文件中有一定数量的行,不如这样:
with open("/Users/battledrum/Desktop/HeightVStime.txt","w") as fout:
with open("/Users/battledrum/Desktop/review2.txt") as fin1:
with open("/Users/battledrum/Desktop/review3.txt") as fin2:
fout.writelines([(', '.join((x.rstrip('\n'),y))) for x,y in zip(fin1,fin2)])
zip
将合并 fin1
和 fin2
之间的行,因为我们可以将每个文件对象视为一个可迭代对象,如果其中一个文件较长,则将丢弃剩余的行比另一个。
假设文件长度相同
with open(fin) as f1:
with open(fin1) as f2:
num1 = [l.strip() for l in f1.readlines()]
num2 = [l.strip() for l in f2.readlines()]
with open(fout,'w+') as out:
for i in range(0,len(num1)):
out.write(','.join([num1[i], num2[i]])+'\n')
这里有很多错误:
file.read()
获取文件的全部内容,因此您正在写入(整个第一个文件)+ tab +(整个第二个文件)您要逐行读取的位置.您永远不会附加到
a
,因此len(a)
将始终为 0。您在
a
中想要的内容不是很清楚 - 逐行文件内容?
我想你想要更像
的东西HEIGHT_FILE = "/Users/battledrum/Desktop/review2.txt"
TIME_FILE = "/Users/battledrum/Desktop/review3.txt"
OUTPUT_FILE = "/Users/battledrum/Desktop/HeightVStime.txt"
def main():
# load data pairs
with open(HEIGHT_FILE) as hf, open(TIME_FILE) as tf:
hts = [(height.strip(), time.strip()) for height,time in zip(hf, tf)]
# write output
with open(OUTPUT_FILE, "w") as outf:
lines = ("{}\t{}".format(h, t) for h,t in hts)
outf.write("\n".join(lines))
print("{} lines written".format(len(hts)))
if __name__=="__main__":
main()