python文件执行路径问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python文件执行路径问题相关的知识,希望对你有一定的参考价值。

python往相对路径中写日志,单独运行该问题,没问题,但是通过其他程序运行该python文件就会报错
写日志的py文件:
def writeFileName(self,logtext):
nowTime =str(time.strftime("%Y%m%d",time.localtime(time.time())))
timeForWrite = str(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())))
fileName = "..\log\\result.txt"
if os.path.exists(fileName):

f = open(fileName,'a+')
f.write(logtext.decode("utf-8").encode("GBK"))
f.close()
else:

f = open(fileName,'w')
f.write(logtext.decode("utf-8").encode("GBK"))
f.close()
通过命令行运行报错:
C:\Users\wanglongjun>python D:\software\python\PyProject\robotization\pythonFile
\runfile\test1.py
Traceback (most recent call last):
File "D:\software\python\PyProject\robotization\pythonFile\runfile\test1.py",
line 21, in <module>
write.writeFileName("test2,2016-08-10 17:29:19,failse,time is out"+"\n")
File "D:\software\python\PyProject\robotization\pythonFile\runfile\test1.py",
line 16, in writeFileName
f = open(fileName,'w')
IOError: [Errno 2] No such file or directory: '..\\log\\result.txt'
在其他python文件中执行该文件也报错:
File "./runfile/test1.py", line 21, in <module>
write.writeFileName("test2,2016-08-10 17:29:19,failse,time is out"+"\n")
File "./runfile/test1.py", line 16, in writeFileName
f = open(fileName,'w')
IOError: [Errno 2] No such file or directory: '..\\log\\result.txt'

跪求各位大神帮忙看看需要如何解决这种情况,跪谢

  如果程序需要使用一些配置文件时,一般也是用相对路径的,这样也容易出问题,这时需要在启动程序时切换到程序所在的路径。
  sys.path[0] 是程序所在的目录,在程序开头处加上 os.chdir(sys.path[0]) 就可以了。
  如果是使用 py2exe 打包的程序,sys.path[0] 值是 路径名\\library.zip , 再处理一下这个就可以:
  ddir = sys.path[0]
  if os.path.isfile(ddir):
  ddir,filen = os.path.split(ddir)
  os.chdir(ddir)
参考技术A 现进入CMD,然后输入DOS命令进入setup.py文件所在目录,然后输入python setup.py install就搞定了。

执行包含完整路径的python可执行文件和脚本

【中文标题】执行包含完整路径的python可执行文件和脚本【英文标题】:Execute python executable and script inlucing full path 【发布时间】:2020-09-15 08:03:59 【问题描述】:

我正在尝试创建一个执行一系列 python 和 sql 脚本的 python 脚本。

有些需要使用一个 python 可执行文件执行,有些需要使用另一个。

我试过了

from subprocess import call 
call([r"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\pythonw.exe", r"C:\Path\to\python\file\blabla.py"])

call([r"cd C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3", "pythonw.exe", r"C:\Path\to\python\file\blabla.py"])

但是脚本没有被执行。

我认为问题可能是“如何在 Windows 终端中执行包含完整路径的 .exe 文件”?

【问题讨论】:

【参考方案1】:

请检查我的代码。它在我身边运行良好。

from subprocess import call

call([r"C:\Python38\python.exe", r"E:\python\hello.py"])

我认为,问题在于您使用的是 pythonw.exe。 如果你使用 pythonw.exe,你可以看到任何登录终端。 Pythonw 对于使用 GUI 运行脚本很有用。

【讨论】:

以上是关于python文件执行路径问题的主要内容,如果未能解决你的问题,请参考以下文章

执行包含完整路径的python可执行文件和脚本

如何在 Python 中获取当前执行文件的路径?

python获取当前路径

Python 配置文件相对路径&软件自动执行的工作目录

如何获取调用 python 可执行文件的路径 [重复]

Python3文件路径/目录获取教程