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

时间:2017-06-13 02:29:18

标签: python

enter image description here

我正在尝试将Wheat中的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)

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

请检查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行中的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'   

# 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'

将行220中的305更改为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)

请参考。