问题描述
我正在尝试编写一个程序,将所有其他行从thisFile.txt
到thatFile.txt
,但是现在,我只是很难将来自thisFile.txt
的行复制到thatFile.txt
。
我尝试使用两种不同的方法进行复制,一种方法被注释掉,另一种方法在注释部分之前的for循环中。
file_one=open('thisFile.txt','w+')
file_two=open('thatFile.txt','w+')
file_one.write('Hello\nHow\nAre\nYou')
for line in file_one:
file_two.write(line)
#line=' '
#while line !='':
# line=file_one.readline()
# file_two.write(line)
file_one.close()
file_two.close()
1楼
您已经打开了两个文件以进行读取和写入,但是在写入第一个文件后,期望立即从该文件读取。
文件指针位于文件末尾。
如果.seek(0)
返回文件的开头,它将起作用:
file_one=open('thisFile.txt','w+')
file_two=open('thatFile.txt','w+')
file_one.write('Hello\nHow\nAre\nYou')
# rewind the file to prep for read.
file_one.seek(0)
for line in file_one:
file_two.write(line)
file_one.close()
file_two.close()
2楼
解决第一个问题(复制所有行)。
您需要在mode='r'
打开所需的文件,然后写入下一个以mode='w'
(或简称为'r'
和'w'
)打开的文件。
with open('test.txt', 'r') as f1:
lines = f1.readlines()
with open('test2.txt', 'w') as f2:
for line in lines:
f2.write(line)
对于第一个文件,您可以使用readlines()
来实际读取每一行。
要解决第二个问题(每隔一行):
with open('test.txt', 'r') as f1:
lines = f1.readlines()
with open('test2.txt', 'w') as f2:
for i,line in enumerate(lines):
if i % 2 == 0:
f2.write(line)
else:
pass
您只需要实现enumerate()
即可遍历列表并仅提供键为偶数的行。
您当然可以更改为奇数。