当我看它写的东西时,它总是加倍。例如,如果我写'狗'病得到'狗狗'。为什么呢?
读取和写入文件,从命令行参数中获取文件名:
from sys import argv
script,text=argv
def reading(f):
print f.read()
def writing(f):
print f.write(line)
filename=open(text)
#opening file
reading(filename)
filename.close()
filename=open(text,'w')
line=raw_input()
filename.write(line)
writing(filename)
filename.close()
正如我所说,我得到的输出是我给出的输入的双倍值。
答案 0 :(得分:1)
因为你写了两次,你获得了双倍的价值
1)从函数调用
def writing(f):
print f.write(line)
2)使用filename.write(line)
使用此代码:
from sys import argv
script,text=argv
def reading(f):
print f.read()
def writing(f):
print f.write(line)
filename=open(text,'w')
line=raw_input()
writing(filename)
filename.close()
也不需要关闭文件两次,一旦完成所有的读写操作,就关闭它。
答案 1 :(得分:-1)
如果要显示每一行然后再写一个新行,您可能应该先读取整个文件,然后在编写新内容时循环遍历这些行。
这是你如何做到的。当您使用with open()
时,您不必close()
该文件,因为这是自动完成的。
from sys import argv
filename = argv[1]
# first read the file content
with open(filename, 'r') as fp:
lines = fp.readlines()
# `lines` is now a list of strings.
# then open the file for writing.
# This will empty the file so we can write from the start.
with open(filename, 'w') as fp:
# by using enumerate, we can get the line numbers as well.
for index, line in enumerate(lines, 1):
print 'line %d of %d:\n%s' % (index, len(lines), line.rstrip())
new_line = raw_input()
fp.write(new_line + '\n')