设置可执行文件的文件夹路径
Setting Folder Path for Executable
我编写了一个脚本,将 CSV 文件作为输入,编辑它们并将它们保存到一个文件夹中。在 IDE (Pycharm) 中 运行ning 时一切正常,但是当我 运行 可执行文件(使用 Pyinstaller 生成)时,脚本崩溃,因为它找不到文件夹CSV 文件。如果手动转到终端中的目录和 运行 可执行程序,程序将正常运行,但如果您 运行 通过双击图标则不会。
文件夹结构如下:
Editor ( main folder)
-> Input1 (folder)
|-> contains CSV files to edit
-> Input2 (Folder)
|-> contains CSV files to edit
-> Output (folder)
|-> edited CSV should go here
-> Main (executable)
我试过使用
path = (sys.path[0])
path = os.path.dirname(os.path.abspath(__file__))
path = os.getcwd()
当我打印路径时,使用 IDE 我得到了我的程序存储的路径。
但是,一旦我创建了一个可执行文件,打印的路径与可执行文件的 运行ning 来自的位置不匹配,它给出 root/user/
我希望能够从计算机上的任何位置运行 可执行文件,只要输入和输出文件夹在同一目录中
我该如何解决这个问题?
我是 运行ning MAC OS X Catalina, Python 3.7
我能够使用以下代码解决问题:
path = os.path.dirname(sys.argv[0])
然后可以使用以下方法检查 csv 文件是否存在:
checkpath = os.path.join(path, "Folder_Name")
if not any(os.path.splitext(f)[1] == '.csv' for f in os.listdir(checkpath)):
print("Folder is empty, Please check Folder contains CSV files")
print("Press Any key to Return to Main Menu")
input()
main()
else:
print("\nStarting Data Editing")
我编写了一个脚本,将 CSV 文件作为输入,编辑它们并将它们保存到一个文件夹中。在 IDE (Pycharm) 中 运行ning 时一切正常,但是当我 运行 可执行文件(使用 Pyinstaller 生成)时,脚本崩溃,因为它找不到文件夹CSV 文件。如果手动转到终端中的目录和 运行 可执行程序,程序将正常运行,但如果您 运行 通过双击图标则不会。
文件夹结构如下:
Editor ( main folder)
-> Input1 (folder)
|-> contains CSV files to edit
-> Input2 (Folder)
|-> contains CSV files to edit
-> Output (folder)
|-> edited CSV should go here
-> Main (executable)
我试过使用
path = (sys.path[0])
path = os.path.dirname(os.path.abspath(__file__))
path = os.getcwd()
当我打印路径时,使用 IDE 我得到了我的程序存储的路径。 但是,一旦我创建了一个可执行文件,打印的路径与可执行文件的 运行ning 来自的位置不匹配,它给出 root/user/
我希望能够从计算机上的任何位置运行 可执行文件,只要输入和输出文件夹在同一目录中
我该如何解决这个问题? 我是 运行ning MAC OS X Catalina, Python 3.7
我能够使用以下代码解决问题:
path = os.path.dirname(sys.argv[0])
然后可以使用以下方法检查 csv 文件是否存在:
checkpath = os.path.join(path, "Folder_Name")
if not any(os.path.splitext(f)[1] == '.csv' for f in os.listdir(checkpath)):
print("Folder is empty, Please check Folder contains CSV files")
print("Press Any key to Return to Main Menu")
input()
main()
else:
print("\nStarting Data Editing")