【问题标题】:Python script inactive on OS XPython 脚本在 OS X 上无效
【发布时间】:2016-01-30 15:39:08
【问题描述】:

当我运行 python 脚本终端时,不会返回错误,也不会执行。

在 python IDLE 中也试过: 逐行很好,但是如果我执行文本编辑器的内容,则会在 IDE 中开始一个新行但不执行。

没有返回错误。

etc:~ peter$ which -a python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
/usr/bin/python
/usr/local/bin/python
etc:~ peter$ /usr/bin/python --version
Python 2.7.10
etc:~ peter$ /usr/local/bin/python --version
Python 2.7.9

如果从 Python 启动器运行:

etc:~ peter$ cd '/Users/peter/Documents/' && '/usr/local/bin/pythonw'  '/Users/peter/Documents/rename_files.py'  && echo Exit status: $? && exit 1
Exit status: 0
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

但没有执行任何操作。甚至文件中的打印语句也没有。文件内容:

import os
def rename_files():
    #get files
    file_list = os.listdir("/Users/peter/Downloads/prank")
    print (file_list)
    saved_path = os.getcwd()
    #rename files
    os.chdir("/Users/peter/Downloads/prank")
    for file_name in file_list:
        os.rename(file_name, file_name.translate(None,"0123456789"))
    os.chdir(saved_path)

【问题讨论】:

  • 也许你需要一个 shebang 作为你的第一行来告诉操作系统它是 Python...#!/usr/bin/python 或类似的。
  • 你只是定义一个函数并在那里导入一些东西,而不是实际执行任何东西。您的意思是在最后添加对rename_files() 的呼叫吗?

标签: python macos python-idle


【解决方案1】:

您的文件导入了os 模块,定义了一个名为rename_files 的函数,但从不调用任何代码。

在文件的最后,如果你想用这段代码做某事,你需要调用函数。这将在函数定义之后进行,并确保将其缩回到左边距。

rename_files()

或者,您可以测试将脚本作为可执行文件而不是模块调用,例如

if __name__ == '__main__':
    rename_files()

这是一个养成的好习惯。它允许您将文件作为脚本调用,立即调用您的代码,但您也可以将文件导入其他脚本,访问它们的功能,但不运行它们(直到您的其他脚本准备将它们用于某些事情) .它让您的文件既可以作为可执行脚本,也可以作为代码库。

【讨论】:

    猜你喜欢
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 2011-05-27
    • 2016-06-01
    • 2011-10-30
    • 2011-02-07
    相关资源
    最近更新 更多