Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试使用shutil.move()将文件移动到子文件夹中_Python_Python 2.7_Shutil - Fatal编程技术网

Python 尝试使用shutil.move()将文件移动到子文件夹中

Python 尝试使用shutil.move()将文件移动到子文件夹中,python,python-2.7,shutil,Python,Python 2.7,Shutil,我试图编写一个代码,将所有文件放在一个目录中,并将它们组织到子目录中。i、 e.2017.2.3、2016.2.5、2015.5.6、2014.3.5放入原始目录中标记为2017、2016、2015、2014的文件夹中。使用2.7.13 我使用的代码如下: import os, shutil root_path = ('D:\Sigma\Rides') folders = ['2016', '2017', '2018', '2019', '2020'] for folder in folder

我试图编写一个代码,将所有文件放在一个目录中,并将它们组织到子目录中。i、 e.2017.2.3、2016.2.5、2015.5.6、2014.3.5放入原始目录中标记为2017、2016、2015、2014的文件夹中。使用2.7.13

我使用的代码如下:

import os, shutil

root_path = ('D:\Sigma\Rides')
folders = ['2016', '2017', '2018', '2019', '2020']
for folder in folders:
   os.mkdir(os.path.join(root_path,folder))

source = os.listdir('D:\\Sigma\\Rides')
dest1 = ('D:\\Sigma\\Rides\\2016')
dest2 = ('D:\\Sigma\\Rides\\2017')
dest3 = ('D:\\Sigma\\Rides\\2018')
dest4 = ('D:\\Sigma\\Rides\\2019')
dest5 = ('D:\\Sigma\\Rides\\2020')


for files in source:
    if (files.startswith('2016_')):
        shutil.move(os.path.join(source, files), dest1)
    if (files.startswith('2017')):           
        shutil.move(os.path.join(source, files), dest2)
    if (files.startswith('2018')):
        shutil.move(os.path.join(source, files), dest3)
    if (files.startswith('2019')):
        shutil.move(os.path.join(source, files), dest4)
    if (files.startswith('2020')):
        shutil.move(os.path.join(source, files), dest5)
这是我收到的错误:

Traceback (most recent call last):
  File "D:\Documents\Programs\Sigma_File_Move.py", line 24, in <module>
    shutil.move(os.path.join(source, files), dest1)
  File "D:\Python27\ArcGIS10.4\lib\ntpath.py", line 65, in join
    result_drive, result_path = splitdrive(path)
  File "D:\Python27\ArcGIS10.4\lib\ntpath.py", line 116, in splitdrive
    normp = p.replace(altsep, sep)
AttributeError: 'list' object has no attribute 'replace'
回溯(最近一次呼叫最后一次):
文件“D:\Documents\Programs\Sigma\u File\u Move.py”,第24行,在
move(os.path.join(源、文件)、dest1)
文件“D:\Python27\ArcGIS10.4\lib\ntpath.py”,第65行,在join中
结果驱动,结果路径=拆分驱动(路径)
splitdrive中第116行的文件“D:\Python27\ArcGIS10.4\lib\ntpath.py”
normp=p.replace(altsep,sep)
AttributeError:“列表”对象没有属性“替换”

任何反馈都将不胜感激。

这里的问题是,您正试图通过加入
变量和
文件
来创建源文件路径。这里的
source
是“骑乘”目录中所有文件和文件夹的列表。无法将文件和文件夹列表与文件夹名称关联。这就是错误发生的原因

因此,将
os.path.join(源,文件)
替换为
os.path.join(根路径,文件)
应该适合您

if (files.startswith('2016_')):
    shutil.move(os.path.join(source, files), dest1)
应改为

if (files.startswith('2016_')):
    shutil.move(os.path.join(root_path, files), dest1)

有一个错误。您不能实际使用
abspath
在此处创建路径。我已将其更改为在代码中使用
root\u path
变量。