我想遍历目录中所有文件夹中的pdf文件,对这些文件进行操作(提取文本,保存到. txt),然后将所有txt保存到具有相同名称但位于不同目录的不同文件夹集中。该函数按预期执行,但不使用子文件夹。我知道有os.walk,但我不知道如何在这里使用它。如果我有所有没有子文件夹的文件,函数就可以工作;它会写入所需的目录。但是我需要遍历文件夹,保存到其他目录中的文件夹。
在一个目录中找到文件,并对其进行操作,保存到另一个目录中。正在尝试os.walk,但未成功合并文件夹结构。
文件夹结构基本上是路径/folder1…folderN
有30K文件,所以希望保留到文件夹系统。
def convertall(pdfDir, txtDir):
if pdfDir == "": pdfDir = os.walk(path) + "\\"
for pdf in os.listdir(pdfDir): --- tried os.walk here too;
fileExtension = pdf.split(".")[-1]
if fileExtension == "pdf":
pdfFilename = pdfDir + pdf
text = convert(pdfFilename)
textFilename = txtDir + pdf + ".txt"
textFile = open(textFilename, "w")
textFile.write(text)
pdfDir = pdfpath
txtDir = txtpath
convertall(pdfDir)
计划这样做的各种操作,所以希望学习一些通用的解决方案。
os.walk
调用时使用top-down=True
以的格式在每次迭代时返回一个元组(此\u目录\u路径、此\u目录中的目录、此\u目录中的文件)
。元组的第二和第三个元素是列表,这意味着您也必须遍历它们。因此,您可以像这样浏览目录结构:
import os
def create_my_new_path(old_root)
# This gives us everything after /home/user/PDFs, e.g. folderN
relative_path = os.path.relpath(old_root, "/home/user/PDFs")
# This returns "/home/user/TXTs/folderN"
return os.path.join("/home/user/TXTs", relative_path)
for root, directories, files in os.walk("/home/user/PDFs", topdown=True):
for pdf_filename in files:
# Use .lower() for the comparison in case there are files that end in ".PDF"
if pdf_filename[-4:].lower() == ".pdf":
# the variable `root` may not contain the absolute path
# depending on what you passed to os.walk, so you might
# want to use os.path.abspath(root) before passing it
# to the path builder
txt_save_dir = create_my_new_path(root)
txt_filename = "".join(old_filename[:-4], ".txt")
result = parse_PDF(os.path.join(root, filename))
with open(os.path.join(txt_save_dir, txt_filename), "w") as f:
f.write(result)
for directory in directories:
# If you wanted to do something with the subfolders too, you could do it here
continue
我希望这个例子很容易理解,这样你就可以根据自己的需要调整它。
一些提示:
os.path.join
来创建文件路径,而不是串联,因为如果操作系统缺少相应的分隔符,它会自动添加该分隔符。如果忘记确保文件夹和文件分开,那么它将写入错误的位置
以下是所有os.path
操作:https://docs.python.org/3/library/os.path.html
在这里可以找到os.walk
的用法:https://docs.python.org/3/library/os.html
Python版本:2.7.13 操作系统:Windows 因此,我正在编写一个脚本,根据文件名中包含文件夹名的要求,将各种名称的文件复制到特定文件夹中。(我对这一点相当陌生,只是想在工作中创建更高效的脚本——我查看了大量StackOverflow页面和web上的一些地方,但找不到与此特定任务相关的Python) 我已经将文件夹转换为一个字符串列表,我可以搜索文件名,但是当我将它们复制到上面时,它们
问题内容: 我正在尝试压缩包含子文件夹的文件夹。尝试压缩名为10-18-2010_4D的文件夹。以上程序以以下异常结束。请提供有关如何解决此问题的建议。 问题答案: 您需要检查文件是否为目录,因为您无法将目录传递给zip方法。 看一下该页面,该页面显示了如何递归压缩给定目录。
问题内容: 我有一个名为“数据”的文件夹。此文件夹有一个名为“收件箱”的子文件夹,其中有多个“ .txt”文件。可以修改“数据”文件夹,最后会有多个带有“收件箱”子文件夹和“ .txt”文件的子文件夹。我需要监视“收件箱”文件夹中的“数据”文件夹和“ .txt”文件。我怎样才能做到这一点? INotify只是监视文件夹,并在创建子文件夹时弹出事件。创建“ .txt”文件(在哪个文件夹中)时,如何弹
问题内容: 我正在尝试仅将原始文件从一个目录复制到另一个目录,但是某些文件具有相同的名称…我正在尝试使用哈希来比较文件,如果其不在目录中发送并且名称相同,它到file_name.something。目前,我正在获取一些文件,并且具有相同名称的文件正在被覆盖…任何人都可以提出建议吗? 问题答案: 您将哈希与文件名进行比较。你需要类似的东西 计算目标文件夹中每个文件的哈希值。 此外,在当前版本中,您的
本文向大家介绍Java如何在不存在文件夹的目录下创建文件,包括了Java如何在不存在文件夹的目录下创建文件的使用技巧和注意事项,需要的朋友参考一下 核心代码如下所示: 1、 2、 总结 以上所述是小编给大家介绍的Java如何在不存在文件夹的目录下创建文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!
我已经用Eclipse创建了一个可运行的jar。在我的项目中,我有一个叫做问卷的文件夹,里面有一些我使用的文本文件。当我运行我的可运行jar时,它不起作用,除非我在与jar相同的文件夹中有文件夹调查表。我尝试了一些我在stackoverflow中读到的解决方案,比如将文件夹调查表添加为源文件夹,也可以从Properties->java build path->Libraries->add clas