Python 在shell中运行代码和从文件中运行代码之间的区别

Python 在shell中运行代码和从文件中运行代码之间的区别,python,csv,Python,Csv,我不熟悉csv模块(一般来说是Python)。我运行了一些测试代码来编写一个CSV文件,我意识到当我在shell中运行它时,它会起作用,但当我在空闲的文件中运行它时,它不会起作用。当我尝试后者时,它告诉我“open”是无效语法。这是怎么回事 import csv with open('csvtest.csv', 'w') as f: writer = csv.writer(f) writer.writerow('test1', 'test2', 'test3') 引用 版本2.

我不熟悉csv模块(一般来说是Python)。我运行了一些测试代码来编写一个CSV文件,我意识到当我在shell中运行它时,它会起作用,但当我在空闲的文件中运行它时,它不会起作用。当我尝试后者时,它告诉我“open”是无效语法。这是怎么回事

import csv
with open('csvtest.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow('test1', 'test2', 'test3')
引用

版本2.5中的新功能

with语句用于将块的执行包装为with 由上下文管理器定义的方法(请参阅带有语句的部分 上下文管理器)


您的IDLE可能正在运行Python 2.4或更早版本。

什么版本的Python(来自shell和IDLE内部)?您使用的是相同版本的Python吗?也就是说,在shell和IDE中?什么版本?您的空闲最有可能运行在Python.IIRC的旧版本上,
open
函数是很久很久以前添加的,比如2.0或2.2左右。但是
with
语句是在2.6中添加的,因此很可能您正在使用,例如Python 2.5,而
with
则是实际的
语法错误。(如果你粘贴了完整的输出,我们可以看到插入符号在哪里,不必猜测…)如果你想测试这个,试着写
f=open('csvtest.csv')
,看看这是否也是无效的语法。如果不是,那就是
。是的,就是这样,谢谢。但是,我想知道为什么我删除with语句:
import csv f=open('csvtest.csv','w')writer=csv.writer(f)writer.writerow('test1','test2','test3','test4')
它运行,但不写入csv文件。with语句是使write对象工作所必需的吗?