独占模式打开文件没关闭?具体报错信息是什么
Microsoft Windows [版本 10.0.17763.107]
(c) 2018 Microsoft Corporation。保留所有权利。
C:\Users\lijing>f:
F:\>cd F:\python_work\PDF_Name
F:\python_work\PDF_Name>PDF_New01.exe
'PDF_New01.exe' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
F:\python_work\PDF_Name>cd F:\python_work\PDF_Name\dist\PDF_New01
F:\python_work\PDF_Name\dist\PDF_New01>PDF_New01.exe
Traceback (most recent call last):
File "PDF_New01.py", line 40, in <module>
File "os.py", line 268, in renames
FileNotFoundError: 系统找不到指定的路径。: 'F:\\python_work\\PDF_Name\\dist\\PDF_New01\\发货单.pdf' -> ''
Failed to execute script PDF_New01
F:\python_work\PDF_Name\dist\PDF_New01> xiaoqu525 发表于 2020-7-7 19:51
Microsoft Windows [版本 10.0.17763.107]
(c) 2018 Microsoft Corporation。保留所有权利。
路径搞错了吧,突然想起来,打包成exe后os.getcwd()得到的是一个奇怪的路径。等会我开机试试行不行{:10_250:} hrp 发表于 2020-7-7 20:06
路径搞错了吧,突然想起来,打包成exe后os.getcwd()得到的是一个奇怪的路径。等会我开机试试行不行{:10_2 ...
大佬QQ多少啊。。。 hrp 发表于 2020-7-7 20:06
路径搞错了吧,突然想起来,打包成exe后os.getcwd()得到的是一个奇怪的路径。等会我开机试试行不行{:10_2 ...
大佬大佬大佬 xiaoqu525 发表于 2020-7-7 21:19
大佬大佬大佬
我不是大佬{:10_250:}
吃完饭给忘了不好意思{:10_250:} hrp 发表于 2020-7-7 22:00
我不是大佬
吃完饭给忘了不好意思
我一直在等你啊。。。大佬 xiaoqu525 发表于 2020-7-7 22:12
我一直在等你啊。。。大佬
试了一下,解析出来的pathnew是空的,而且你历遍的table也没有用上,不知道你要拿什么字段来做文件名呢?我暂且用文件前几个字来试 WLDD20200504000234,找到W的索引值然后+18。。就能取出来这东西,然后重命名。。 hrp 发表于 2020-7-7 22:17
试了一下,解析出来的pathnew是空的,而且你历遍的table也没有用上,不知道你要拿什么字段来做文件名呢? ...
太奇怪了,我直接pycharm能运行没问题。。但是我要换机子弄,不可能每台机都配置Python环境,所以打包exe,打包了就不行了 xiaoqu525 发表于 2020-7-7 22:30
太奇怪了,我直接pycharm能运行没问题。。但是我要换机子弄,不可能每台机都配置Python环境,所以打包exe ...
打包后os.getcwd()得到的路径不是exe所在路径,所以要换一个方法。
另外你要找到WLDD20200504000234然后把文件重命名成WLDD20200504000234吗?WLDD格式是固定的吗? 固定的。。我已经换了os.getcwd了,改用os.path.dirname了,还是一样 hrp 发表于 2020-7-7 22:36
打包后os.getcwd()得到的路径不是exe所在路径,所以要换一个方法。
另外你要找到WLDD20200504000234然后 ...
这是一个表格类的pdf。。 本帖最后由 hrp 于 2020-7-7 23:17 编辑
xiaoqu525 发表于 2020-7-7 22:39
这是一个表格类的pdf。。
因为我手上没有表格类的,我就试了text,可以正常运行,你改改。
# coding = utf-8
import os
import tkinter.messagebox
import pdfplumber
realdir = os.path.dirname(os.path.realpath(__file__))
pdffiles = [
os.path.join(realdir, f) for f in os.listdir(realdir)
if os.path.isfile(f) and f[-3:] == 'pdf'
]
# print(pdffiles)
for pdffile in pdffiles:
with pdfplumber.open(pdffile) as pdf:
first_page = pdf.pages
text = first_page.extract_text()
# print(text)
pdf.close()
index = text.find('WLDD')
if index != -1:
new_name = text
else:
# 没找到W则跳过。
continue
new_name += '.pdf'
# print(new_name)
new_path = os.path.join(realdir, new_name)
os.rename(pdffile, new_path)
tkinter.messagebox.showinfo("提示", "重命名已完成")
要注意如果表格不在第一页上,那最后的new_path就可能是空的,会导致重命名报错,要处理空的情况 本帖最后由 hrp 于 2020-7-7 23:55 编辑
xiaoqu525 发表于 2020-7-7 22:39
这是一个表格类的pdf。。
重新写了适应表格,你试试
# coding = utf-8
# 最终版本
import os
import tkinter.messagebox
import pdfplumber
realdir = os.path.dirname(os.path.realpath(__file__))
pdffiles = [
os.path.join(realdir, f) for f in os.listdir(realdir)
if os.path.isfile(f) and f[-3:] == 'pdf'
]
for pdffile in pdffiles:
with pdfplumber.open(pdffile) as pdf:
# 这里写pdf.pages那么就要保证表格在第一页,否则就会出错。
first_page = pdf.pages
tables = first_page.extract_tables()
strings = (string for table in tables for row in table for string in row)
new_name = None
for string in strings:
index = string.find('WLDD')
if index != -1:
new_name = string
break
if new_name:
new_path = os.path.join(realdir, new_name + '.pdf')
try:
os.rename(pdffile, new_path)
# 重命名失败则跳过(一般是已存在同名文件)。
except Exception:
pass
tkinter.messagebox.showinfo("提示", "重命名已完成")
牛 hrp 发表于 2020-7-7 23:16
重新写了适应表格,你试试
提示这个AttributeError: 'NoneType' object has no attribute 'find' xiaoqu525 发表于 2020-7-8 07:10
提示这个AttributeError: 'NoneType' object has no attribute 'find'
那可能是你试的时候没解析到表格,我自己随便建的一个表格pdf是可以正常重命名的。first_page = pdf.pages是只取pdf的第一页,确认你的表格是不是在第一页,不是第一页就修改那个0。print一下first_page、tables看看都解析出来啥自己再改,白天没空帮你改了{:10_250:} hrp 发表于 2020-7-8 08:11
那可能是你试的时候没解析到表格,我自己随便建的一个表格pdf是可以正常重命名的。first_page = pdf.page ...
好。。是在第一页的
页:
1
[2]