我的任务是编写一个非常简单的脚本,但是我一辈子都无法弄清楚如何...
我需要做的就是使用Shutil模块将所有包含“ Tax_”的文件从〜/ Documents文件夹复制到当前工作目录。
import shutil
import os
src = os.path.expanduser('~/Documents/Tax 2018')
dst = os.getcwd()
for files in src:
if 'bdd' in files: # also tried: if files.startswith("Tax_")
shutil.copy(files,dst)
不起作用。我们还可以选择使用Shutil.which("Tax_")
查找文件,但这根本行不通。
答案 0 :(得分:1)
您可以尝试以下操作:
from glob import glob
for file in glob('~/Documents/Tax 2018/Tax_*'):
shutil.copy(file, dst)
glob
将返回与通配符模式匹配的文件列表,在这种情况下,将返回给定路径上以Tax_开头的文件。
答案 1 :(得分:1)
也许类似的东西对您有用。它询问您输入目录,然后询问您要将文件保存在何处。如果保存目录不存在,那么将创建它;如果保存目录已经存在,则将继续。最后的input()
函数就可以保留python控制台,以便您可以看到它已经完成。
使用shutil.copy2的好处是它尝试保留文件的元数据。
另外,根据文件的命名方式,您并不是很明确,可能需要稍微更改if 'tax_' in file.lower():
这一行。
import shutil
import os
input_dir = input('Please enter directory that contains that tax files.\n')
output_dir = input('\nPlease enter the path where you want to save the files.\n')
for file in os.listdir(input_dir):
if 'tax_' in file.lower():
if not os.path.exists(output_dir):
os.makedirs(output_dir)
shutil.copy2(os.path.join(input_dir, file), os.path.join(output_dir, file))
input('\nFinished --> Files are saved to %s' % output_dir) # format() or f strings are ideal but not sure which python version you have
答案 2 :(得分:1)
请确保为文件指定文件类型,并希望它对您有用:
#!/usr/bin/env python3
#Imports
from shutil import copyfile
import shutil
import os
# Assigning the variables to search and the location
file_str = "Tax_201"
search_path = os.path.join(os.path.expanduser('~'),'Documents')
# Repeat for each file in the search path
for filename in os.listdir(path=search_path):
# Check if the file starts with Tax_2018
if filename.startswith(file_str):
# Assigning the variables for the src and destination
path_src = os.path.join(os.path.expanduser('~'),'Documents', filename)
path_destination = os.path.join(os.path.expanduser('~'),'Documents', 'Taxes', filename)
# Copy the file that matched the file_str
shutil.copyfile(path_src, path_destination)
else:
# Stop the loop
break
输出
Documents/ ├── Taxes ├── Tax_2018.txt ├── Tax_2019.txt
Documents/Taxes/ ├── Tax_2018.txt ├── Tax_2019.txt
答案 3 :(得分:0)
请尝试:
import glob
import os
import shutil
dst = os.getcwd()
str_target = 'bdd' # OR 'Tax_'
f_glob = "~/Documents/Tax 2018/{}*.txt".format(str_target)
ls_f_dirs = glob.glob(f_glob)
for f_dir in ls_f_dirs:
shutil.copy(f_dir, dst)