Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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:循环遍历不同目录中的文件并扫描数据_Python_File_Loops_Directory - Fatal编程技术网

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

Python:循环遍历不同目录中的文件并扫描数据,python,file,loops,directory,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\u项目 2) 主目录ex:C:Users\user\Desktop\Data 3) 当前工作目录ex:C:Users\use

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

我在windows Powershell中使用Python 2.7版

所有东西的位置

1) Python脚本位置ex:
C:Users\user\Python\u项目

2) 主目录ex:
C:Users\user\Desktop\Data

3) 当前工作目录ex:
C:Users\user\python\u项目

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

尝试运行脚本

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

脚本按以下方式运行:
pythonscript1.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)  
但是,以下方法不起作用

脚本按以下方式运行:
pythonscript1.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)
我得到以下错误:

打开(路径)作为文件对象:

IO错误:[Errno 2]没有这样的文件或目录:

'C:Users\\user\\Desktop\\A\\sasa.1'


请注意,我现在只处理一个文件,我希望能够循环浏览文件夹中的所有sasa文件。

可以是以下内容:

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关键字。尝试打印(目录(操作系统))


另请注意,您可以使用更改目录位置

os.chdir(path)

到目前为止,没有人提到环球公司,到目前为止:

我认为您可以使用它的
**
魔力解决您的问题:

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


考虑使用<代码>操作系统.Wave >我是否能够只传递ARGV中的文件夹名,或者必须传递整个文件路径吗?理想情况下,我只想将文件夹名放在参数中,我可能会在代码中找到主文件夹的整个路径,但我希望用户只需将包含文件的文件夹名放在其中。您可以使用
os.path.join()
来加入一个基本目录,例如包含数据的目录“2)主目录ex:C:Users\user\Desktop\Data”和用户输入的目录。在中检查文档如果目录与当前目录相关,也可以使用os.getcwd()获取它您好,我试图解决此问题,但发现自己没有成功。我想知道您是否可以查看我的更新说明。谢谢您的原始路径,我认为C:后缺少一个“\”,现在是“C:用户…”,不应该是C:\用户…我尝试使用os.chdir(文件夹名称)将文件夹名传递到目录时。如何在不知道的情况下传递整个路径?
os.chdir(path)