有没有办法在Python中返回当前目录中所有子目录的列表?
我知道你可以用文件做到这一点,但我需要获取目录列表.
我有一个C++/Obj-C背景,我只是发现了Python(已经写了大约一个小时).我正在编写一个脚本,以递归方式读取文件夹结构中的文本文件的内容.
我遇到的问题是我编写的代码只适用于一个文件夹.我可以在代码中看到原因(参见参考资料#hardcoded path
),我只是不知道如何继续使用Python,因为我的经验只是全新的.
Python代码:
import os
import sys
rootdir = sys.argv[1]
for root, subFolders, files in os.walk(rootdir):
for folder in subFolders:
outfileName = rootdir + "/" + folder + "/py-outfile.txt" # hardcoded path
folderOut = open( outfileName, 'w' )
print "outfileName is " + outfileName
for file in files:
filePath = rootdir + '/' + file
f = open( filePath, 'r' )
toWrite = f.read()
print "Writing '" + toWrite + "' to" + filePath
folderOut.write( toWrite ) …
Run Code Online (Sandbox Code Playgroud) x=$(find . -name "*.txt")
echo $x
Run Code Online (Sandbox Code Playgroud)
如果我在Bash shell中运行上面的代码,我得到的是一个包含多个文件名的字符串,用空格分隔,而不是列表.
当然,我可以进一步将它们分开来获取列表,但我确信有更好的方法可以做到这一点.
那么循环find
执行命令结果的最佳方法是什么?
我经常使用python来处理数据目录.最近,我注意到列表的默认顺序已经变为几乎荒谬的东西.例如,如果我在包含以下子目录的当前目录中:run01,run02,... run19,run20,然后我从以下命令生成一个列表:
dir = os.listdir(os.getcwd())
Run Code Online (Sandbox Code Playgroud)
然后我通常按此顺序获得一个列表:
dir = ['run01', 'run18', 'run14', 'run13', 'run12', 'run11', 'run08', ... ]
Run Code Online (Sandbox Code Playgroud)
等等.订单曾经是字母数字.但是这个新订单现在已经和我保持了一段时间.
什么是确定这些列表的(显示)顺序?
我正在尝试执行一些地理处理.我的任务是在目录中找到所有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) 使用python在文件夹中获取完整的递归文件列表的最简单方法是什么?我知道os.walk()
,但只是获取所有文件的未过滤列表似乎有点过分.它真的是唯一的选择吗?
我有一个名为 ImageData 的图像文件夹,其中有 5000 个子文件夹,每个子文件夹包含 2-3 个图像。我想检索这些图像并将它们存储在一个地方/文件夹中。我如何使用 python 来做到这一点。
首先,如果标题不清楚,请允许我道歉。
为了简化我在工作中执行的任务,我开始编写此脚本来自动从特定路径中删除文件。
我的问题是,在当前状态下,此脚本不会检查路径提供的文件夹内的文件夹内容。
我不知道如何解决这个问题,因为据我所知,它应该检查这些文件?
import os
def depdelete(path):
for f in os.listdir(path):
if f.endswith('.exe'):
os.remove(os.path.join(path, f))
print('Dep Files have been deleted.')
else:
print('No Dep Files Present.')
def DepInput():
print('Hello, Welcome to DepDelete!')
print('What is the path?')
path = input()
depdelete(path)
DepInput()
Run Code Online (Sandbox Code Playgroud) 我有很多文件夹,每个文件夹都有几个 pdf 文件(也有其他文件类型,如 .xlsx 或 .doc)。我的目标是提取每个文件夹的pdf文本并创建一个数据框,其中每条记录都是“文件夹名称”,每列以字符串形式表示该文件夹中每个pdf文件的文本内容。
我设法从一个带有包的 pdf 文件中提取文本tika
(代码如下)。但无法进行循环来迭代文件夹或其他文件夹中的其他 pdf,从而构建结构化数据框。
# import parser object from tike
from tika import parser
# opening pdf file
parsed_pdf = parser.from_file("ducument_1.pdf")
# saving content of pdf
# you can also bring text only, by parsed_pdf['text']
# parsed_pdf['content'] returns string
data = parsed_pdf['content']
# Printing of content
print(data)
# <class 'str'>
print(type(data))
Run Code Online (Sandbox Code Playgroud)
所需的输出应如下所示:
文件夹名称 | pdf1 | pdf2 |
---|---|---|
17534 | pdf1 的文本 | pdf 2 的文本 |
63546 | pdf1 的文本 | pdf1 的文本 |
26374 | pdf1 的文本 | - |
python ×8
directory ×2
apache-tika ×1
bash ×1
dataframe ×1
file ×1
file-io ×1
filesystems ×1
find ×1
list ×1
listdir ×1
os.walk ×1
path ×1
pdf ×1
python-3.x ×1
scripting ×1
shapefile ×1
subdirectory ×1