我想从根目录导航到其中的所有其他目录并打印相同的目录.
这是我的代码:
#!/usr/bin/python
import os
import fnmatch
for root, dir, files in os.walk("."):
print root
print ""
for items in fnmatch.filter(files, "*"):
print "..." + items
print ""
Run Code Online (Sandbox Code Playgroud)
这是我的O/P:
.
...Python_Notes
...pypy.py
...pypy.py.save
...classdemo.py
....goutputstream-J9ZUXW
...latest.py
...pack.py
...classdemo.pyc
...Python_Notes~
...module-demo.py
...filetype.py
./packagedemo
...classdemo.py
...__init__.pyc
...__init__.py
...classdemo.pyc
Run Code Online (Sandbox Code Playgroud)
以上,.
并且./packagedemo
是目录.
但是,我需要以下列方式打印O/P:
A
---a.txt
---b.txt
---B
------c.out
Run Code Online (Sandbox Code Playgroud)
以上,A
并且B
是目录,其余的文件.
如何限制os.walk
只返回我提供的目录中的文件?
def _dir_list(self, dir_name, whitelist):
outputList = []
for root, dirs, files in os.walk(dir_name):
for f in files:
if os.path.splitext(f)[1] in whitelist:
outputList.append(os.path.join(root, f))
else:
self._email_to_("ignore")
return outputList
Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本来递归遍历主文件夹中的子文件夹并构建一个特定文件类型的列表.我遇到了脚本问题.目前设定如下
for root, subFolder, files in os.walk(PATH):
for item in files:
if item.endswith(".txt") :
fileNamePath = str(os.path.join(root,subFolder,item))
Run Code Online (Sandbox Code Playgroud)
问题是subFolder变量正在拉入子文件夹列表而不是ITEM文件所在的文件夹.我想在之前为子文件夹运行for循环并加入路径的第一部分,但我想我会仔细检查以确定是否有人在此之前有任何建议.谢谢你的帮助!
我担心文件和目录的顺序os.walk()
.如果我有这些目录,1
,10
,11
,12
,2
,20
,21
,22
,3
,30
,31
,32
,什么是输出列表的顺序?
它是按数值排序的吗?
1 2 3 10 20 30 11 21 31 12 22 32
Run Code Online (Sandbox Code Playgroud)
或者按ASCII值排序,就像给出的那样ls
?
1 10 11 12 2 20 21 22 3 30 31 32
Run Code Online (Sandbox Code Playgroud)
另外,我该如何获得特定的排序?
我正在寻找一种方法来包含/排除文件模式并从os.walk()
调用中排除目录.
这就是我现在正在做的事情:
import fnmatch
import os
includes = ['*.doc', '*.odt']
excludes = ['/home/paulo-freitas/Documents']
def _filter(paths):
matches = []
for path in paths:
append = None
for include in includes:
if os.path.isdir(path):
append = True
break
if fnmatch.fnmatch(path, include):
append = True
break
for exclude in excludes:
if os.path.isdir(path) and path == exclude:
append = False
break
if fnmatch.fnmatch(path, exclude):
append = False
break
if append:
matches.append(path)
return matches
for root, dirs, files in os.walk('/home/paulo-freitas'):
dirs[:] = _filter(map(lambda d: …
Run Code Online (Sandbox Code Playgroud) 我需要列出文件夹中包含目录路径的所有文件.我尝试使用os.walk
,这显然是完美的解决方案.
但是,它还列出了隐藏的文件夹和文件.我希望我的应用程序不要列出任何隐藏的文件夹或文件.是否有任何标志可以用来使它不产生任何隐藏文件?
跨平台对我来说并不重要,只要它适用于linux(.*pattern)就可以了.
我在大型硬盘上乱码python中的文件查找.我一直在看os.walk和glob.我经常使用os.walk,因为我发现它更整洁,似乎更快(对于通常的大小目录).
有没有人对他们有任何经验,可以说哪个更有效率?正如我所说,glob似乎更慢,但你可以使用通配符等,就像walk一样,你必须过滤结果.以下是查找核心转储的示例.
core = re.compile(r"core\.\d*")
for root, dirs, files in os.walk("/path/to/dir/")
for file in files:
if core.search(file):
path = os.path.join(root,file)
print "Deleting: " + path
os.remove(path)
Run Code Online (Sandbox Code Playgroud)
要么
for file in iglob("/path/to/dir/core.*")
print "Deleting: " + file
os.remove(file)
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来进行非递归os.walk()
步行,就像os.listdir()
工作一样.但我需要以同样的方式os.walk()
返回.任何的想法?
先感谢您.
我想知道是否可以在python3中强制os.walk按字母顺序访问目录.例如,这是一个目录和一些将遍历此目录的代码:
ryan:~/bktest$ ls -1 sample
CD01
CD02
CD03
CD04
CD05
--------
def main_work_subdirs(gl):
for root, dirs, files in os.walk(gl['pwd']):
if root == gl['pwd']:
for d2i in dirs:
print(d2i)
Run Code Online (Sandbox Code Playgroud)
当python代码点击上面的目录时,输出如下:
ryan:~/bktest$ ~/test.py sample
CD03
CD01
CD05
CD02
CD04
Run Code Online (Sandbox Code Playgroud)
我想强迫步行按字母顺序访问这些目录01, 02 ... 05
.在python3 doc中os.walk
,它说:
当topdown为True时,调用者可以就地修改dirnames列表(可能使用del或slice赋值),而walk()只会递归到名称保留在dirnames中的子目录中; 这可以用来修剪搜索,强加一个特定的访问顺序
这是否意味着我可以强加一个按字母顺序排列的访问顺序os.walk
?如果是这样,怎么样?
我正在尝试执行一些地理处理.我的任务是在目录中找到所有shapefile,然后在目录中找到该shapefile的完整路径名.我可以获取shapefile的名称,但我不知道如何获取该shapefile的完整路径名.
shpfiles = []
for path, subdirs, files in os.walk(path):
for x in files:
if x.endswith(".shp") == True:
shpfiles.append[x]
Run Code Online (Sandbox Code Playgroud)