【发布时间】:2016-07-11 09:49:42
【问题描述】:
我知道如果我将一个长 python 脚本放在一个文件中会更容易,但我正在尝试解决为什么我在 python3 -c cmd 中出现语法错误:
仅供参考:如果重要的话,我将在 OS X 上执行此操作。
我阅读了以下内容,但没有解决我的问题: python multiline command running from bash
如果从文件中执行,这是工作 python3 脚本:
import csv
with open('tmp/google_adwords_report.csv', 'r') as csvfile:
csvfile.seek(0)
next(csvfile)
readCSV = csv.DictReader(csvfile)
for row in readCSV:
print(row)
如果在命令行python3 -c cmd 中执行,这是相同的脚本:
$ python3 -c "import csv; with open('tmp/google_adwords_report.csv', 'r') as csvfile: csvfile.seek(0); next(csvfile); readCSV = csv.DictReader(csvfile); for row in readCSV: print(row);"
File "<string>", line 1
import csv; with open('tmp/google_adwords_report.csv', 'r') as csvfile: csvfile.seek(0); next(csvfile); readCSV = csv.DictReader(csvfile); for row in readCSV: print(row);
^
SyntaxError: invalid syntax
谢谢
【问题讨论】:
-
根据您提供的链接,您没有完全按照工作解决方案中的说明进行操作。我跟着他们,在让它工作之前我唯一遇到的问题是缩进问题,这并不奇怪。我在每个
\n之后相应地尝试了间距,并且我得到了它的工作。通过工作...我没有收到语法错误。这就是我检查的所有功能。 -
不相关但
csvfile.seek(0)是一个 noop,指针已经在文件的开头,如果你在 ide 中执行该行,你会得到同样的错误。我通过在必要时添加制表符和换行符使其正常工作 -
@idjaw 我试过了:
python3 -c "import csv\n\nwith open('tmp/google_adwords_report.csv', 'r') as csvfile:\n\tnext(csvfile)\n\treadCSV = csv.DictReader(csvfile)\n\tfor row in readCSV:\n\t\tprint(row)",我得到了 SyntaxError: unexpected character after line continuation character -
@JeffTanner 这意味着新行之后的间距仍然关闭。这没有给我一个语法错误:pastebin.com/WPPaFKEx
-
@PadraicCunningham 关于
csvfile.seek(0)的好点。
标签: python macos bash command-line