0

我有这个 .py 文件:

from sys import argv

script, filename = argv

print "We're going to erase %r." % filename
print "If you don't want that, hit CTRL-C (^C)."
print "If you do want that, hit RETURN."

raw_input("?")

print "Opening the file..."
target = open(filename, 'w')

print "Truncating the file.  Goodbye!"
target.truncate()

print "Now I'm going to ask you for three lines."

line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")

print "I'm going to write these to the file."

target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

print "And finally, we close it."
target.close()

我不明白的是:

a)为什么在解释器中如果我写,raw_input("?")然后输入f并按回车,它会输出'f'字符串,如果我运行 .py 文件它不会返回'f'字符串?

b)另外,python 文档说:“该函数然后从输入中读取一行,将其转换为字符串(剥离尾随换行符),然后返回它。那么,为什么第 7 行打印在新行而不是行上6("?Opening the file..."). 这是\n从哪里来的?

4

2 回答 2

0

a)它确实返回了字符串,但是您没有将其保存在变量中。在这种情况下,交互式解释器将回显该值。

b)这\n可能是输入的一部分(您的打字),尽管很难知道您的确切意思。

于 2012-01-11T15:45:38.503 回答
0

printa) 默认情况下,解释器会打印命令的输出,但除非您使用该语句,否则您的脚本不会这样做。

print raw_input('?')

b)'\n'is 不在从 返回的字符串中raw_input,但无论如何它都会在您按 Enter 时被控制台捕获,因此这是您在使用raw_input.

print repr(raw_input('?'))  # You'll get 'f', not 'f\n'
于 2012-01-11T15:45:30.453 回答