【问题标题】:Running script from python command line从 python 命令行运行脚本
【发布时间】:2014-05-26 14:31:39
【问题描述】:

使用 Python3.3

尝试从 python 命令行运行脚本。由于某些编码格式问题,需要从 python 命令行而不是 windows 命令行运行它。但我得到以下错误:

>>> python Start.py
File "<stdin>", line 1
python Start.py
           ^
SyntaxError: invalid syntax

我想我已经在 Python 中了,所以上面的内容是无效的。我尝试了 execfile 但这也无济于事。

有人可以帮忙吗?

编辑

解决了从 python 命令行运行脚本的问题。尽管这并不能解决原始编码问题。在此处查看线​​程Changing the preferred encoding for Windows7 command prompt

【问题讨论】:

  • 您不能从 python 命令提示符执行此操作。您可以从 cmd 或在 python 中执行此操作:import Start.py 但请注意,如果您有 if __name__ == '__main__': ...,则第二种方法将不起作用
  • 也许您想告诉我们您的编码格式问题?这听起来像XY problem 这里。
  • The answers to this question 可能会解决您的问题,但正如@MartijnPieters 所说,您最好尝试正确解决潜在问题。
  • @sshashank124:如果您使用execfile(),则名称设置为__main__。除了 Python 3 中不再提供此功能。哎呀。
  • 如果你需要为你的python脚本提供命令行参数,也许你可以特别使用subprocess模块。

标签: python python-3.x command-line


【解决方案1】:

您已经在运行 Python,因此无需运行 python 命令。 execfile 在 Python3 中消失了,但你可以这样做:

with open("Start.py") as f:
    c = compile(f.read(), "Start.py", 'exec')
    exec(c)

【讨论】:

  • 在这种情况下,我们会将问题作为骗子关闭,而不是在此处重复投票最高的答案。
  • @timgeb 你的建议没有用。而是在下面工作 exec(open("./filename").read())
  • 虽然这并不能解决我原来的编码问题
  • @lilyhack 很奇怪,我在解释器中对其进行了测试。你得到了什么错误?
  • @timgeb python 命令行不断要求更多这样的命令(不执行任何东西)>>> with open("Start.py") as f: ... c = compile( f.read(), "Start.py", 'exec') ... exec(c) ...
【解决方案2】:

exec(open('Start.py').read(),globals())

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
【解决方案3】:

试试这个:

    python "/path/Start.py"

【讨论】:

    【解决方案4】:

    对于 Windows,我们必须写

    C:\Python31\python.exe test.py > results.txt

    // 来自 CMD - 来自 Summersfeld 的常青树“Python 3 编程 - 完整介绍”。 如果我们有 python 的环境变量,我们甚至不需要C:\Python31\ 部分就可以了

    C:\>python.exe test.py > results.txt
    

    【讨论】: