IOError:[Errno 2]没有这样的文件或目录?

问题描述:

enter image description hereIOError:[Errno 2]没有这样的文件或目录?

我试图移动220个文件小麦train_reuters文件包,并在小麦举动train_reuters test_reuters文件包中的另一个文件,但是当我运行的代码,它给我的错误,我居然将文件放在正确的位置!我该如何解决问题? enter image description here

#!/usr/bin/python 
#coding:utf-8 
import sys 
reload(sys) 
sys.setdefaultencoding('utf-8') 
import os 
import os.path 
import shutil 
import random 
path = '/home/user1/zhouchun/lda/reuters-21578/Wheat' 
targetpath1 = '/home/user1/zhouchun/lda/reuters-21578/train_reuters' 
targetpath2 = '/home/user1/zhouchun/lda/reuters-21578/test_reuters' 
list=random.sample(range(1, 306),220) 
for i in list: 
    file_dir = os.path.join(path, str(i)) 
    # print file_dir 
    shutil.move(file_dir, targetpath1) 
files = os.listdir(path) 
for file in files: 
    # print file 
    dir = os.path.join(path, file) 
    if dir != file_dir: 
     shutil.move(dir, targetpath2) 

我检查你的代码,这是正确的。 然后问题可能是: 1.你只能运行你的代码一次,两次或更多次会导致这个错误。 2.在运行代码之前,请确保所有306个文件都在Wheat目录中。

我建议在每次运行前使用复制,但不要移动,然后清除火车和测试文件。

请检查ome/user1/zhouchun/lda/reuters-21578/Wheat文件数是305

我创建了一个函数把随机文件,你可以参考的代码。

import random 
import os 

path = r'E:\temp\temp' 

list= random.sample(range(1, 306), 220) 
for i in list: 
    file_dir = os.path.join(path, str(i)) 
    with open(file_dir, 'w') as f: 
     f.write('file_dir: %s' % file_dir) 
     f.close() 

请注意行220

后做此粘贴你的代码,并更改路径,

#!/usr/bin/python 
#coding:utf-8 
import sys 

import os.path 
import shutil 
import random 
import time 

path = r'E:\temp\temp' 
targetpath1 = r'E:\temp\old' 
targetpath2 = r'E:\temp\new' 

# move the file  
list = random.sample(range(1, 306), 220) 
for i in list: 
    file_dir = os.path.join(path, str(i)) 
    # print file_dir 
    # targetpath1_dir = os.path.join(targetpath1, str(i)) 
    shutil.move(file_dir, targetpath1) 
files = os.listdir(path) 


for file in files: 
    # print(file) 
    # print file 
    dir = os.path.join(path, file) 

    if dir != file_dir: 
     shutil.move(dir, targetpath2) 

比运行代码,错误信息将收入。

Traceback (most recent call last): 
    File "D:\Python_3.5\lib\shutil.py", line 544, in move 
    os.rename(src, real_dst) 
FileNotFoundError: [WinError 2] System can't found the file.: 'E:\\temp\\temp\\182' -> 'E:\\temp\\old\\182' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "F:/Python_Code/FaceDetect/123123.py", line 31, in <module> 
    shutil.move(file_dir, targetpath1) 
    File "D:\Python_3.5\lib\shutil.py", line 558, in move 
    copy_function(src, real_dst) 
    File "D:\Python_3.5\lib\shutil.py", line 257, in copy2 
    copyfile(src, dst, follow_symlinks=follow_symlinks) 
    File "D:\Python_3.5\lib\shutil.py", line 120, in copyfile 
    with open(src, 'rb') as fsrc: 
FileNotFoundError: [Errno 2] No such file or directory: 'E:\\temp\\temp\\182' 

变化从220305符合list= random.sample(range(1, 306), 220)号码后,错误就会消失。

完整的代码。

#!/usr/bin/python 
#coding:utf-8 
import sys 

import os.path 
import shutil 
import random 
import time 

path = r'E:\temp\temp' 
targetpath1 = r'E:\temp\old' 
targetpath2 = r'E:\temp\new' 

# create the random file. 
list= random.sample(range(1, 306), 220) 
for i in list: 
    file_dir = os.path.join(path, str(i)) 
    with open(file_dir, 'w') as f: 
     f.write('file_dir: %s' % file_dir) 
     f.close() 

time.sleep(1) 

# move the file 

list = random.sample(range(1, 306), 220) 
for i in list: 
    file_dir = os.path.join(path, str(i)) 
    # print file_dir 
    # targetpath1_dir = os.path.join(targetpath1, str(i)) 
    shutil.move(file_dir, targetpath1) 
files = os.listdir(path) 


for file in files: 
    # print(file) 
    # print file 
    dir = os.path.join(path, file) 

    if dir != file_dir: 
     shutil.move(dir, targetpath2) 

请参考。