使用shutil.move()

时间:2017-03-16 18:52:02

标签: python shutil file-moving

我正在尝试使用Python中的shutil模块移动文件。我一直收到这个错误:

Traceback (most recent call last):
  File "<input>", line 31, in <module>
  File "C:\Python27\lib\shutil.py", line 302, in move
    copy2(src, real_dst)
  File "C:\Python27\lib\shutil.py", line 130, in copy2
    copyfile(src, dst)
  File "C:\Python27\lib\shutil.py", line 82, in copyfile
    with open(src, 'rb') as fsrc:
 IOError: [Errno 2] No such file or directory: 'MLR_Resi_Customer.txt'

我不明白为什么我没有这样的文件或目录。如果不是使用shutil.move(filename, new_dest),它将打印我正在寻找的文件名。

import shutil
import os
import datetime

# set location of folders and files needed
source = '//nspinfwcipp01/BSA/marketing'
dest_cust = '//nspinfwcipp01/BSA/marketing/res_cust'
dest_pros = '//nspinfwcipp01/BSA/marketing/res_pros'
dest_win = '//nspinfwcipp01/BSA/marketing/res_win'

# create date time stamp of now
dt = str(datetime.datetime.now())

files = os.listdir(source)
print files

# create new path to storage files for old data
cust_files = os.listdir(dest_cust)
pros_files = os.listdir(dest_pros)
win_files = os.listdir(dest_win)

# new file names
new_cust = 'MLR_Resi_Customers'+dt+'.txt'
new_pros = 'MLR_Resi_Prospects'+dt+'.txt'
new_win = 'MLR_Resi_Winbacks'+dt+'.txt'

   #move files from marketing folder into their own folder when after done     processing

for f in files:
    if (f.endswith("Customer.txt")):
        print f
        shutil.move(f,dest_cust)
    elif (f.endswith("Prospects")):
        #print f
         shutil.move(f,dest_pros)
    elif (f.endswith("Winbacks")):
        #print f
        shutil.move(f,dest_win)

##rename files in storage with data for Kalyan and Jake's Project

## rename customer file for storage
for x in cust_files:
    if (x.endswith("Customers")):
        #print x
        new_cust = 'MLR_Resi_Customer'+dt+'.txt'
        os.rename('MLR_Resi_Customers.txt', new_cust)
    else:
        print "no_customer_file"

## rename prospect file for storage
for x in cust_files:
    if (x.endswith("Prospects")):
        #print x
        os.rename('MLR_Resi_Prospects.txt', new_pros)
    else:
        print "no_prospect_file"

## rename winback file for storage
for x in cust_files:
    if (x.endswith("Winbacks")):
        #print x
        os.rename('MLR_Resi_Winbacks.txt', new_win)
    else:
        print "no_winback_file"

所以我不确定我做错了什么。文件的路径是正确的,它似乎能够很好地打印文件名。我们非常感谢您对上述问题的任何帮助。

1 个答案:

答案 0 :(得分:0)

使用shutil.move(glob.glob(f)[0],dest_whatever)这应该通过为它提供文件的实际路径来解决您的问题,但是,如果文件不存在glob.glob将返回一个空数组。