【问题标题】:How to choose & save files to a directory with Python 3?如何使用 Python 3 选择文件并将其保存到目录?
【发布时间】:2018-07-15 22:26:10
【问题描述】:

在选择父文件夹或目录后,我无法为要存储的文件创建子文件夹。

这是我当前的脚本:

import os, sys, subprocess, shutil, glob, os.path, csv

#User Chooses Folder or File Path Directory
path_new = filedialog.askdirectory()

def saveData():
   serial_number = input('Scan Barcode: ')
   folder_name = print('Folder Name:', serial_number)
   os.chdir(path_new) #Not sure if this is necessary
   if not os.path.exists(path_new):
       os.makedirs(path_new)
   print ('The data has been stored in the following directory:', path_new)
   shutil.move('file_directory/TOTAL.csv', 'chosen_directory/%s'% (serial_number))
   shutil.move('file_directory/enviro.csv', 'chosen_directory/%s' % (serial_number))

脚本运行,但不是我想要的。有没有人有任何建议或替代解决方案来创建文件夹并将其选择为创建子文件夹并将文件传输到其中的目录?

【问题讨论】:

  • 为了回答这个问题,如果您布置一个您期望的示例路径结构可能会非常有帮助。您在计算所涉及的所有文件和目录的路径名或创建它们时遇到问题吗?
  • 请注意您的代码存在严重的安全漏洞 (path traversal);它允许任何购物者写入文件系统中的任意文件。这可能不是你想要的。在任何用户输入上调用 os.path.basename 以获取文件名。此外,请确保输入也符合您期望的格式。
  • 我正在开发一个图形用户界面,只是在为此苦苦挣扎。我希望此脚本执行以下操作:用户选择目录(使用当前日期创建文件夹)-> 扫描条形码-> 在所选目录内创建一个带有扫描部分的子文件夹---> 将文件从另一个目录传输到当前目录认为被创造。这个过程将重复完成,这就是为什么我想选择一次目录并让脚本在每次输入“saveData”时创建和移动文件。
  • 您在哪一步有问题? stackoverflow 不是代码编写服务。
  • 明白。我在剧本结尾遇到了麻烦。我开始认为 shutil.move 不是将文件移动到所选目录的正确命令。我得到的是一个空的新文件夹和一个更改为序列号名称的 csv 文件。

标签: python-3.x directory subdirectory shutil


【解决方案1】:

我解决了我的问题。如果其他人知道写出来的“更干净”的方式,请更新一个更好的答案。到目前为止,这正是我想要的。

代码:

import os, sys, shutil. os.path

path = filedialog.askdirectory()

def saveData():
        serial_number = input('Scan Barcode: ')
        folder_name = print('Folder Name:', serial_number)
        path_new = os.path.join(path, '%s' % (serial_number))
        if not os.path.exists(path_new):
                os.makedirs(path_new)
        shutil.move('C:/files/TOTAL.csv', path_new)
        shutil.move('C:/files/enviro.csv', path_new)
        print('The data has been stored in the following directory:', path_new)

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 2015-10-17
    • 1970-01-01
    • 2019-02-03
    • 2011-04-17
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多