【问题标题】:Moving files in Python doesn't work once made executable using pyinstaller一旦使用 pyinstaller 使其可执行,在 Python 中移动文件就不起作用
【发布时间】:2019-01-23 00:29:28
【问题描述】:

我有一个运行良好的 Python 脚本,脚本运行后会创建大约 1000 个文件。

所以我实现了一些代码,以便在脚本运行后将文件移动到新文件夹。

import glob, os, shutil

source_dir = 'C:/Users/george/Desktop/my aemo app/a'
dst = 'C:/Users/george/Desktop/my aemo app/b'
files = glob.iglob(os.path.join(source_dir, "*.csv"))
for file in files:
    if os.path.isfile(file):
        shutil.copy2(file, dst)

当我在空闲时运行它时它工作正常,但是一旦成为可执行文件并将程序发送给其他人,它不会为他们移动文件?

【问题讨论】:

  • 对方的系统上是否有C:/Users/george 目录?
  • 不,他们没有。
  • 有没有什么办法可以让它无所谓?
  • 如果他们不这样做,那么复制将不起作用。您需要“即时”确定源和目标目录名称,而不是将它们硬编码到脚本代码中。
  • 对,我以为它行不通。那我该怎么办呢?谢谢顺便说一句

标签: python pyinstaller glob shutil


【解决方案1】:

我想发送给另一个用户的问题是他们的用户名可能不是“george”,因此他们的文件结构与您的程序正在寻找的不同。我会尝试使用环境变量或相关路径在要分发的程序上移动文件。 操作系统文档: https://docs.python.org/2/library/os.html#process-parameters

相对路径类似于../../file/deepFile/whatYoureLookingFor,如果您想从运行程序的位置上移 2 个目录,然后沿着另一条路径进入 file

【讨论】:

  • 您还可以让用户在运行时通过 GUI 创建或参数解析来指定路径。参数解析文档位于docs.python.org/2/howto/argparse.html。并且 GUI 创建通常使用 python 的 tkinter 模块完成,一个很好的教程位于:effbot.org/tkinterbook
  • 有没有办法让程序在哪里无关紧要?
  • 我的目标是:如果我将程序发送给某人并且他们在下载中打开它,它会运行并在他们的下载中创建一个新文件夹并将所有文件放在那里。或者如果我发送如果我将程序发送给某人并且他们在其他地方打开它,例如他们的桌面运行并在他们的桌面上创建一个新文件夹并将所有文件放在那里。
  • 这种事情可能吗?
  • 您是否尝试过使用打印语句进行故障排除? for file in files: print(file.__next__()) 之类的东西?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-22
  • 2022-07-16
  • 2014-01-04
  • 2020-01-28
  • 2021-08-16
  • 1970-01-01
相关资源
最近更新 更多