Python脚本和类在同一个文件中

时间:2012-04-27 04:51:29

标签: python linux permissions

我有一个Python类,它假设通过将自己提交到集群环境来在后台执行某些任务。 e.g。

class AwesomeTaskController(object):
    def run(bunch_of_tasks):
        for task in bunch_of_tasks:
            cmd = "%s %s" % (os.path.abspath(__file__), build_cli_paramters(task))
            # call the API to submit the cmd

if __name__ == "__main__":
    #blah blah do stuff with given parameters

本课程第一次运行时一切顺利。当它第一次运行时,会创建一个pyc文件。此pyc文件不可执行(权限明确)。

所以我第二次使用这个类时,命令将直接使用pyc并抱怨权限被拒绝。也许我从错误的角度接近这个?

1 个答案:

答案 0 :(得分:0)

.pyc文件本身不可执行;你总是要执行.py文件。 .pyc文件只是.py文件的编译版本,Python会在下次运行.py文件时动态生成该文件。

在您的情况下,您需要做的就是检查__file__是否以“.pyc”结尾并删除尾随的“c”。你可以这样做,比如说,用你的脚本替换__file__

(__file__[:-1] if __file__.endswith(".pyc") else __file__)

这应该可以解决你的问题。