Sar*_*ara 4 python python-2.6 with-statement
我正在尝试使用带有python 2.6的"with open()"并且它正在给出错误(语法错误),而它与python 2.7.3工作正常我错过了一些东西或一些导入使我的程序工作!
任何帮助,将不胜感激.
BR
我的代码在这里:
def compare_some_text_of_a_file(self, exportfileTransferFolder, exportfileCheckFilesFolder) :
flag = 0
error = ""
with open("check_files/"+exportfileCheckFilesFolder+".txt") as f1,open("transfer-out/"+exportfileTransferFolder) as f2:
if f1.read().strip() in f2.read():
print ""
else:
flag = 1
error = exportfileCheckFilesFolder
error = "Data of file " + error + " do not match with exported data\n"
if flag == 1:
raise AssertionError(error)
Run Code Online (Sandbox Code Playgroud)
with open()Python 2.6支持该语句,您必须有不同的错误.
有关详细信息,请参阅PEP 343和python 文件对象文档.
快速演示:
Python 2.6.8 (unknown, Apr 19 2012, 01:24:00)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> with open('/tmp/test/a.txt') as f:
... print f.readline()
...
foo
>>>
Run Code Online (Sandbox Code Playgroud)
您正尝试将该with语句与多个上下文管理器一起使用,但这只是在Python 2.7中添加的:
在2.7版中更改:支持多个上下文表达式.
在2.6中使用嵌套语句:
with open("check_files/"+exportfileCheckFilesFolder+".txt") as f1:
with open("transfer-out/"+exportfileTransferFolder) as f2:
# f1 and f2 are now both open.
Run Code Online (Sandbox Code Playgroud)
它是with带有多个上下文表达式的"扩展" 语句,会导致您遇到麻烦.
在2.6中,而不是
with open(...) as f1, open(...) as f2:
do_stuff()
Run Code Online (Sandbox Code Playgroud)
你应该添加一个嵌套级别并写入
with open(...) as f1:
with open(...) as f2:
do.stuff()
Run Code Online (Sandbox Code Playgroud)
文件说
在2.7版中更改:支持多个上下文表达式.