复制任何扩展名的文件

时间:2016-09-02 08:17:44

标签: python python-3.x

我只是尝试编写了几天,所以请原谅我犯下的任何明显错误。我已经搜索了几天,但没有找到解决问题的方法,因此我决定在这里发帖。

我的问题:我已经设法创建了一个脚本,它将在专用文件夹中搜索,并通过input()将用户自己命名的文件复制到多个其他文件夹中。我的垮台是我只能复制具有特定扩展名的文件,例如' .DOCX&#39 ;.我希望代码能够做的就是选择命名文件而不管它的扩展名。

以下是代码:

<label id="mySelect">This is my dropdown:</label>
<script>
  var mySelect = new goog.ui.Select();
  mySelect.addItem(new goog.ui.MenuItem('test 1'));
  mySelect.addItem(new goog.ui.MenuItem('test 2'));
  mySelect.render(goog.dom.getElement('mySelect'));
</script>

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

这就是我开始讨论它的方式。肯定有一些事情需要注意,例如具有相同名称和不同扩展名的多个文件,文件中的多个点等等。我很确定下面的脚本会考虑这两个。看一看。

import shutil
import os
import time

my_dir = r'C:\users\guest\desktop\Folder'
while True:
    all_files = os.listdir(my_dir)
    all_files_and_extentions = [x.split('.') for x in all_files]
    print(all_files_and_extentions)  # -> [['mftf5_fats_LocBuckling_B-Basis_v1', 'txt'], ['mftf5_fats_static_LSET_C_v1', 'docx']

    FileName = input('\n Please enter the file name: ')
    print(FileName)  # -> mftf5_fats_LocBuckling_B-Basis_v1

    the_file_with_ext = '.'.join([y for x in all_files_and_extentions for y in x if x[0] == FileName])
    print(the_file_with_ext)  # -> mftf5_fats_LocBuckling_B-Basis_v1.txt

    for files in the_file_with_ext:
        try:
            shutil.copy(my_dir + '\\' + files, 'C:\\users\\guest\\desktop\\employees\\Folder1')
            shutil.copy(my_dir + '\\' + files, 'C:\\users\\guest\\desktop\\employees\\Folder2')
            shutil.copy(my_dir + '\\' + files, 'C:\\users\\guest\\desktop\\employees\\Folder3')
        except FileNotFoundError:
            print("No such file exists.  Please try again.")
        else:
            break   
print("File transfer complete.")
time.sleep(2)
quit()

答案 1 :(得分:0)

您需要确保FileName 等于文件的名称​​或以文件的名称+点开头。否则,您不能排除可能没有扩展名的文件或具有相同部分名称的文件的错误。

此外,我建议使用条件而不是try / except;仅在文件实际存在时执行操作,否则重试输入:

import shutil, os, time
while True:
    dr = 'C:\\users\\guest\\desktop\\Folder\\'
    FileName = input('\n Please enter the file name: ')
    # see if the file exists (listing files matching the conditions)
    match = [f for f in os.listdir(dr) if any([f == FileName, f.startswith(FileName+".")])]
    # if the list is not empty, use the first match, copy it and break
    if match:
        match = match[0]
        shutil.copy(os.path.join(dr, match), os.path.join('C:\\users\\guest\\desktop\\employees\\Folder1', match))
        # etc...
        break
    else:
        print("No such file exists.  Please try again.")

print("File transfer complete.")
time.sleep(2)
quit()