我正在创建一个PDF生成程序。其中一个功能是合并所有PDF并删除之后的所有片段。我一直工作得很好,直到我改变了PDF的路径。函数如下:
def pdf_cleanup(name):
files_dir = '/root/PycharmProjects/ReportApp/FML/Pdf_Docs'
xx = [f for f in os.listdir(files_dir) if f.endswith("pdf")]
for f in xx:
if f.startswith(name):
pass
else:
os.remove(f)
return
看看files_dir
变量,如果我把它放回一个目录,那么它看起来像这个files_dir = '/root/PycharmProjects/ReportApp/FML'
,它工作得很好。当我试图在Pdf_Docs目录中使用它时,我错误地说“name_of_Pdf”不存在,但它确实存在。在
回溯:
^{pr2}$是不是有什么愚蠢而渺小的东西让我忽略了??我不明白为什么换一个文件夹会坏掉它。在
os.listdir()
只提供文件名,而不是它们的路径,即:因此,当您对其中一个文件名调用
os.remove()
时,它会在当前工作目录中查找该文件,而不是在files_dir
中。在解决方案简单明了:连接
^{pr2}$files_dir
和f
以获得完整路径:附带说明:一个测试在列表理解中,另一个测试在for循环中。你也可以把这两个都放在列表中:
xx
是文件名的列表,而不是文件路径。将路径与目录合并如下:os.remove(os.path.join(files_dir, f))
相关问题 更多 >
编程相关推荐