【问题标题】:How do I open a terminal where the python file is executed如何打开执行 python 文件的终端
【发布时间】:2017-06-22 20:01:32
【问题描述】:

我制作了一个脚本,当点击它时,它会将打开它的目录的所有文件复制到 USB 上。 它在 Pycharm 中工作,但是当我将它转换为可执行文件时(当我使用 pyinstaller 将 .py 转换为 .exec 时)它不起作用。 我几乎可以肯定我知道出了什么问题,但我不知道如何解决。

import shutil
import os

current = os.getcwd()
list_of_files = os.listdir(current)


def get_files():
    print('CURRENT: ' + current)
    print('File_List: ' + str(list_of_files))

    for files in list_of_files:
        shutil.copy(current + '/' + files, '/Volumes/U/Copy_things')

get_files()

长话短说,我正在使用 os.getcwd(),所以文件知道它的位置。
当我在 Pycharm 中执行文件时, os.getcwd() 给我的当前目录是

当前:/Users/MainFrame/Desktop/python_test_hub/move_file_test

但是当我打开可执行文件(与 .py 文件相同的文件夹)并且终端打开 os.getcwd() 给我的是

当前:/Users/MainFrame

所以我需要找到一种方法让可执行文件打开它所在的终端,以便它可以复制这些文件。 我希望能够从任何文件夹执行它并将文件复制到 USB。

【问题讨论】:

  • “当我将它转换为可执行文件时它不起作用” - 你必须详细说明这一步。
  • @yedpodtrzitko 当我使用 pyinstaller 将 .py 转换为 .exec 时
  • 在控制台/终端中运行 .exe 以查看错误。
  • 复制不需要终端。
  • @furas 当我运行可执行文件时,终端会打开。如果我手动转到 exec 在终端中的位置并执行 ./name 它可以工作。但我希望终端自动打开可执行文件所在的位置,并在我单击它时运行其余代码。

标签: python cmd terminal


【解决方案1】:

os.getcwd() 获取执行脚本的目录,这不一定是脚本所在的位置。 Pycharm 最有可能在执行脚本时更改此路径,因为它从项目路径而不是 python 路径执行您的脚本。

尝试os.path.abspath(os.path.dirname(os.sys.argv[0])) 而不是os.getcwd()。

这些答案有更多信息:os.getcwd() vs os.path.abspath(os.path.dirname(__file__))

Difference between __file__ and sys.argv[0]

【讨论】:

  • 我将 os.getcwd() 更改为 os.path.abspath(os.path.dirname(file)) 但它仍然需要我到 /Users/MainFrame 当我运行 exec
  • 试试os.path.abspath(os.path.dirname(os.sys.argv[0])) 我测试了这个,它对我有用。
  • 成功了!谢谢,不知道为什么我想我必须阅读更多内容,但谢谢。
猜你喜欢
  • 2015-07-04
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2017-01-09
  • 2022-01-11
  • 2014-10-23
相关资源
最近更新 更多