将输入打印到输出文件

时间:2015-02-18 18:24:02

标签: python

尝试编写一个程序,提示用户输入文件的名称,然后将其余行复制到输出文件中,直到用户输入句点作为行的第一个字符。

这是我到目前为止所拥有的。我已经让它工作,因此它要求输入并在用户输入"后停止。"作为一行中的第一个字符。但是,我确定我完全错了,因为我的输出真的很奇怪。我是初学者,所以我不熟悉更复杂的功能。因此,最基本,最简单的方法将有很大的帮助。

output_file=input("Enter Output File")
outfile = open(output_file,"w")
text=input("")  
for line in text:
    if text[0] == ".":
        break
    text=input('') 
    print(line, file=outfile)
outfile.close()

输入

hello world
.

输出:

h

4 个答案:

答案 0 :(得分:0)

这是因为您正在执行print(line, file=outfile)并且行获取text中每个字符的值。将行更改为:

print(text, file=outfile)

<强> 修改

有更好的方法:

text=input("")
while text[0]!=".":
  print(text,file=outfile)
  text=input("")
outfile.close()

答案 1 :(得分:0)

for遍历可迭代(如列表或字符串)。您希望重复代码,直到不再满足某些条件。为此,请使用while循环:

text = ''
while text != '.':
    print(text, file=outfile)
    text = input('')

这可能会在输出文件的第一行插入一个空行(因为第一次写入值为''的文本)。一个简单的解决方法是:

text = ''
while text != '.':
    if text != '':
        print(text, file=outfile)
    text = input('')

答案 2 :(得分:0)

问题在于读取

的行
for line in text:

变量text包含一个字符串,上面的行将一次迭代一个字符。

因此,如果您在第一个提示符处输入“hello”,则循环将循环五次,line包含hel,{ {1}}和l按此顺序排列。它甚至可能再次用于换行。

相反,你想做类似的事情:

o

答案 3 :(得分:0)

您正在迭代text,这是一行输入字符串,而不是文件句柄,以获取连续的行。尝试:

for text in sys.stdin:
    if text[0] == '.':
        break
    outfile.write(text)