Python:循环浏览不同目录中的文件并扫描数据

时间:2016-03-28 00:19:57

标签: python file loops directory

我很难在一个与编写脚本的目录不同的目录中循环浏览文件。理想情况下,我还希望我的脚本能够浏览所有以sasa开头的文件。文件夹中有几个文件,如sasa.1,sasa.2等...以及其他文件,如doc1.pdf,doc2.pdf

我使用带有Windows Powershell的Python版本2.7

所有内容的位置

1)Python脚本位置ex:C:Users\user\python_project

2)Main_Directory ex:C:Users\user\Desktop\Data

3)Current_Working_Directory ex:C:Users\user\python_project

主目录包含100个文件夹(文件夹A,B,C,D等..) 这些文件夹中的每一个都包含许多文件,包括感兴趣的sasa文件。

尝试运行脚本

对于1个文件,以下工作:

脚本按以下方式运行:python script1.py

file_path = 'C:Users\user\Desktop\Data\A\sasa.1

def writing_function(file_path):
    with open(file_path) as file_object:
        lines = file_object.readlines()

for line in lines:
print(lines)

writing_function(file_path)  

但是,以下操作不起作用

脚本按以下方式运行:python script1.py A sasa.1

import os
import sys
from os.path import join

dr = sys.argv[1]
file_name = sys.argv[2]

file_path = 'C:Users\user\Desktop\Data'
new_file_path = os.path.join(file_path, dr)
new_file_path2 = os.path.join(new_file_path, file_name)

def writing_function(paths):
    with open(paths) as file_object:
        lines = file_object.readlines()

for line in lines:
    print(line)

writing_function(new_file_path2)

我收到以下错误:

with open(paths) as file_object:
IO Error: [Errno 2] No such file or directory:
'C:Users\\user\\Desktop\\A\\sasa.1'

现在请注意我正在处理一个文件,我希望能够遍历文件夹中的所有sasa文件。

3 个答案:

答案 0 :(得分:2)

它可以是以下内容:

import os
from os.path import join

def function_exec(file):
    code to execute on each file

for root, dirs, files in os.walk('path/to/your/files'): # from your argv[1]
    for f in files:
        filename = join(root, f)
        function_exec(filename)

避免使用变量dir。它是一个python关键字。试试print(dir(os))

dir_ = argv[1] # is preferable 

答案 1 :(得分:0)

到目前为止,没有人提及glob,所以: https://docs.python.org/3/library/glob.html

我认为你可以使用**魔法来解决你的问题:

  

如果recursive为true,则模式“**”将匹配任何文件并为零   或更多目录和子目录。如果模式后跟   一个os.sep,只有目录和子目录匹配。

答案 2 :(得分:-1)

另请注意,您可以使用

更改目录位置
os.chdir(path)