python脚本输出和python控制台输出之间的区别

时间:2012-01-11 15:41:41

标签: python console raw-input

我有这个.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并按Enter键,它会输出'f'字符串,如果我运行.py文件则不会#&# 39;不要给我回复' f'字符串?

b)另外,python docs说:"然后,该函数从输入中读取一行,将其转换为字符串(剥离尾部换行符),然后返回该行。那么,为什么第7行打印在新行而不是第6行("?打开文件......")。 \n来自哪里?

2 个答案:

答案 0 :(得分:0)

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

print raw_input('?')

b)'\n'不在raw_input返回的字符串中,但是当您按Enter键时控制台无论如何都会捕获它,因此这是使用{{1}时产生的副作用}。

raw_input

答案 1 :(得分:0)

a)它确实返回字符串,但你没有将它保存在变量中。交互式翻译将在这种情况下回应价值。

b)\n可能是输入的一部分(您的输入),但很难知道您究竟是什么意思。