我很难在一个与编写脚本的目录不同的目录中循环浏览文件。理想情况下,我还希望我的脚本能够浏览所有以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文件。
答案 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)