一个小脚本遇到的问题之 Windows 命令行下的脚本执行 博客分类: Python windowspythoncmd
程序员文章站
2024-03-25 23:21:22
...
Windows 命令行下面执行python确实是个麻烦事,反正不方便。添加系统环境变量就不多说了。这里说一下python在命令行执行的时候的一些位置。
我这里遇到的问题就是:在之前的程序中,配置文件的路径是相对路径,当然放在一个目录下面啦。直接F5没错,但是在cmd下面就错了.No such file or directory.我都吐血了。
下面的内容参考了Stack Overflow上面的回答。具体地址为:http://*.com/a/12201952
然后查查呗,问问谷歌。原来是python找文件的时候不是从你的脚本所在的位置,而是从他自己的工作目录。可以用 os.getcwd() 查看现在的工作目录是哪里?所以最好的方法就是绝对路径,绝对无敌。不过如果你的文件又被你移来移去,那你就等死吧。
当然你如果很任性,那就使用 os.chdir() 来切换到你的配置文件所在的位置,然后一切就顺理成章了。
上面的没看懂?没关系,看看下面的你会发现我说得很明白了。
更详细的python脚本地址的获取。http://www.elias.cn/Python/GetPythonPath?from=Develop.GetPythonPath 干货摘录如下:
总之,举例来讲,os.getcwd()、sys.path[0] (sys.argv[0])和__file__的区别是这样的: 假设目录结构是: C:\test | [dir] getpath | [file] path.py [dir] sub | [file] sub_path.py 然后我们在C:\test下面执行python getpath/path.py,这时sub_path.py里面与各种用法对应的值其实是: os.getcwd() “C:\test”,取的是起始执行目录 sys.path[0]或sys.argv[0] “C:\test\getpath”,取的是被初始执行的脚本的所在目录 os.path.split(os.path.realpath(__file__))[0] “C:\test\getpath\sub”,取的是__file__所在文件sub_path.py的所在目录