简单的问题,但这让我烦恼。我试图循环一系列不同因素的产品,然后将每个产品打印到一个文件。我可以使用“with”语句让代码工作,但没有它就无法工作,我无法理解为什么。我打开文件,然后像往常一样关闭它。代码如下:
f = open('out.txt', 'w')
for num1 in range(100,999):
for num2 in range(100,999):
product=num1*num2
length=len(str(product))
if length % 2 == 0:
#halfway_point=
print >> f, product
f.close()
在最后一行失败:
SyntaxError: invalid syntax
答案 0 :(得分:2)
不确定您使用的是Python 2还是Python 3.无论哪种方式,您看到SyntaxError
这一事实表明正在使用交互式解释器会话。
我将假设您使用的是Python 2. print >> expression, expression
在Python 2中是有效的print statement,并且您在代码中对它的使用是正确的。它只是意味着将print
语句中第二个表达式的字符串值重定向到第一个表达式中给出的类文件对象。 Python 3中没有此语句。
您可能正在将代码粘贴到交互式Python会话中,如果是这样,您将需要添加一个额外的新行来关闭"关闭"执行for
之前的前一个close()
循环,否则您将获得SyntaxError
。
如果将该代码添加到Python 2脚本文件并运行它,它将起作用:
$ python2 somefile.py
或者只是确保在使用交互式解释器时输入一个额外的新行。
对于Python 3,你会这样做:
print('{}'.format(product), file=f)
您也可以在Python 2中使用相同的print()
函数,方法是从__future__
模块导入它:
from __future__ import print_function
在这两种情况下,您都应该使用您在问题中提到的with
声明。
答案 1 :(得分:0)
我不知道print >> f, product
是什么意思。但你可以这样试试:
f = open('out.txt', 'w')
for num1 in range(100,999):
for num2 in range(100,999):
product=num1*num2
length=len(str(product))
if length % 2 == 0:
#halfway_point=
# print >> f, product
print(str(product) ) # print in the console
f.write(str(product) + "\n")
f.close()
答案 2 :(得分:-1)
由于print >> f, product
此外,您不是写入文件而是打印到控制台。
您需要f.write(str(product) + '\n')
行代替print >> f, product
(我不知道print >> f, product
的含义)
这在python3中对我来说很好用
f = open('out.txt', 'w')
for num1 in range(100,999):
for num2 in range(100,999):
product=num1*num2
length=len(str(product))
if length % 2 == 0:
#halfway_point=
f.write(str(product) + '\n')
f.close()