如何通过打开python

时间:2017-07-20 14:00:37

标签: python python-3.x

目前的问题是基于this问题。

我正在尝试创建一个python脚本,它将遍历指定文件夹中的所有文本文件。文本文件包含将移动到其他指定文件夹的文件的目录。循环遍历文本文件时,它会从该文本文件的每一行的文件目录中获取文件。

最终目标是让文本文件中引用的所有文件移动到一个指定的文件夹(\ 1855)。

import shutil
dst = r"C:/Users/Aydan/Desktop/1855"

with open(r'C:\Users\Aydan\Desktop\RTHPython\Years') as my_folder:
    for filename in my_folder:
        text_file_name = filename.strip()
        with open (text_file_name) as my_file:
            for filename in my_file:
                file_name  = filename.strip()
                src = r'C:\Users\Aydan\Desktop' + file_name    
                shutil.move(src, dst)

一个文本文件(1855.txt)包含:

/data01/BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0001_1.txt
/data01/BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0002_1.txt
/data01/BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0003_1.txt

和另一个文本文件(1856.txt)包含:

/data01/BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0004_1.txt
/data01/BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0005_1.txt
/data01/BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0006_1.txt

这是我运行上述脚本时遇到的错误:

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    with open(r'C:\Users\Aydan\Desktop\RTHPython\Years') as my_folder:
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\Aydan\\Desktop\\RTHPython\\Years'

此脚本似乎没有将此处命名的文件移动到C:/ Users / Aydan / Desktop / 1855目标,即使在脚本中我试图遵循迭代每个项目的相同逻辑文本文件,但将该逻辑应用于文件夹而不是文本文件。

任何寻求解决方案的帮助都会非常棒!如果您需要有关文件的更多信息,请询问。

谢谢!

Aydan。

1 个答案:

答案 0 :(得分:1)

由于您无法使用open方法打开整个文件夹,因此您可以循环浏览该文件夹中的每个.txt文件:

import shutil
import glob
dst = r"C:/Users/Aydan/Desktop/1855"

for filename in glob.glob(r"C:\Users\Aydan\Desktop\RTHPython\Years\*.txt"):
    text_file_name = filename.strip()
    with open (text_file_name) as my_file:
        for filename in my_file:
            file_name  = filename.strip()
            src = r'C:\Users\Aydan\Desktop' + file_name    
            shutil.move(src, dst)