鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: xiaoqu525

:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。

[复制链接]
 楼主| 发表于 2020-7-7 19:51:13 | 显示全部楼层
hrp 发表于 2020-7-7 19:46
独占模式打开文件没关闭?具体报错信息是什么

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: [WinError 3] 系统找不到指定的路径。: 'F:\\python_work\\PDF_Name\\dist\\PDF_New01\\发货单.pdf' -> ''
[8436] Failed to execute script PDF_New01

F:\python_work\PDF_Name\dist\PDF_New01>
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-7 20:06:31 From FishC Mobile | 显示全部楼层
xiaoqu525 发表于 2020-7-7 19:51
Microsoft Windows [版本 10.0.17763.107]
(c) 2018 Microsoft Corporation。保留所有权利。


路径搞错了吧,突然想起来,打包成exe后os.getcwd()得到的是一个奇怪的路径。等会我开机试试行不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-7 20:21:49 | 显示全部楼层
hrp 发表于 2020-7-7 20:06
路径搞错了吧,突然想起来,打包成exe后os.getcwd()得到的是一个奇怪的路径。等会我开机试试行不行{:10_2 ...

大佬QQ多少啊。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-7 21:19:23 | 显示全部楼层
hrp 发表于 2020-7-7 20:06
路径搞错了吧,突然想起来,打包成exe后os.getcwd()得到的是一个奇怪的路径。等会我开机试试行不行{:10_2 ...

大佬大佬大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-7 22:00:31 From FishC Mobile | 显示全部楼层
xiaoqu525 发表于 2020-7-7 21:19
大佬大佬大佬

我不是大佬
吃完饭给忘了不好意思
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-7 22:12:25 | 显示全部楼层
hrp 发表于 2020-7-7 22:00
我不是大佬
吃完饭给忘了不好意思

我一直在等你啊。。。大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-7 22:17:59 | 显示全部楼层
xiaoqu525 发表于 2020-7-7 22:12
我一直在等你啊。。。大佬

试了一下,解析出来的pathnew是空的,而且你历遍的table也没有用上,不知道你要拿什么字段来做文件名呢?我暂且用文件前几个字来试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-7 22:29:14 From FishC Mobile | 显示全部楼层
WLDD20200504000234,找到W的索引值然后+18。。就能取出来这东西,然后重命名。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-7 22:30:14 From FishC Mobile | 显示全部楼层
hrp 发表于 2020-7-7 22:17
试了一下,解析出来的pathnew是空的,而且你历遍的table也没有用上,不知道你要拿什么字段来做文件名呢? ...

太奇怪了,我直接pycharm能运行没问题。。但是我要换机子弄,不可能每台机都配置Python环境,所以打包exe,打包了就不行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-7 22:36:05 | 显示全部楼层
xiaoqu525 发表于 2020-7-7 22:30
太奇怪了,我直接pycharm能运行没问题。。但是我要换机子弄,不可能每台机都配置Python环境,所以打包exe ...

打包后os.getcwd()得到的路径不是exe所在路径,所以要换一个方法。
另外你要找到WLDD20200504000234然后把文件重命名成WLDD20200504000234吗?WLDD格式是固定的吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-7 22:38:50 From FishC Mobile | 显示全部楼层
固定的。。我已经换了os.getcwd了,改用os.path.dirname了,还是一样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-7 22:39:34 From FishC Mobile | 显示全部楼层
hrp 发表于 2020-7-7 22:36
打包后os.getcwd()得到的路径不是exe所在路径,所以要换一个方法。
另外你要找到WLDD20200504000234然后 ...

这是一个表格类的pdf。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-7 22:48:29 | 显示全部楼层
本帖最后由 hrp 于 2020-7-7 23:17 编辑
xiaoqu525 发表于 2020-7-7 22:39
这是一个表格类的pdf。。


因为我手上没有表格类的,我就试了text,可以正常运行,你改改。
  1. # coding = utf-8

  2. import os
  3. import tkinter.messagebox

  4. import pdfplumber

  5. realdir = os.path.dirname(os.path.realpath(__file__))

  6. pdffiles = [
  7.     os.path.join(realdir, f) for f in os.listdir(realdir)
  8.     if os.path.isfile(f) and f[-3:] == 'pdf'
  9. ]
  10. # print(pdffiles)

  11. for pdffile in pdffiles:
  12.     with pdfplumber.open(pdffile) as pdf:
  13.         first_page = pdf.pages[0]
  14.         text = first_page.extract_text()
  15.         # print(text)
  16.         pdf.close()
  17.     index = text.find('WLDD')
  18.     if index != -1:
  19.         new_name = text[index: index + 18]
  20.     else:
  21.         # 没找到W则跳过。
  22.         continue
  23.     new_name += '.pdf'
  24.     # print(new_name)
  25.     new_path = os.path.join(realdir, new_name)
  26.     os.rename(pdffile, new_path)
  27. tkinter.messagebox.showinfo("提示", "重命名已完成")
复制代码

要注意如果表格不在第一页上,那最后的new_path就可能是空的,会导致重命名报错,要处理空的情况
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-7 23:16:53 | 显示全部楼层
本帖最后由 hrp 于 2020-7-7 23:55 编辑
xiaoqu525 发表于 2020-7-7 22:39
这是一个表格类的pdf。。


重新写了适应表格,你试试

  1. # coding = utf-8
  2. # 最终版本

  3. import os
  4. import tkinter.messagebox

  5. import pdfplumber

  6. realdir = os.path.dirname(os.path.realpath(__file__))

  7. pdffiles = [
  8.     os.path.join(realdir, f) for f in os.listdir(realdir)
  9.     if os.path.isfile(f) and f[-3:] == 'pdf'
  10. ]

  11. for pdffile in pdffiles:
  12.     with pdfplumber.open(pdffile) as pdf:
  13.         # 这里写pdf.pages[0]那么就要保证表格在第一页,否则就会出错。
  14.         first_page = pdf.pages[0]
  15.         tables = first_page.extract_tables()

  16.     strings = (string for table in tables for row in table for string in row)

  17.     new_name = None
  18.     for string in strings:
  19.         index = string.find('WLDD')
  20.         if index != -1:
  21.             new_name = string[index:index + 18]
  22.             break

  23.     if new_name:
  24.         new_path = os.path.join(realdir, new_name + '.pdf')
  25.         try:
  26.             os.rename(pdffile, new_path)
  27.         # 重命名失败则跳过(一般是已存在同名文件)。
  28.         except Exception:
  29.             pass

  30. tkinter.messagebox.showinfo("提示", "重命名已完成")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 01:00:15 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-8 07:10:32 | 显示全部楼层
hrp 发表于 2020-7-7 23:16
重新写了适应表格,你试试

提示这个AttributeError: 'NoneType' object has no attribute 'find'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 08:11:53 From FishC Mobile | 显示全部楼层
xiaoqu525 发表于 2020-7-8 07:10
提示这个AttributeError: 'NoneType' object has no attribute 'find'

那可能是你试的时候没解析到表格,我自己随便建的一个表格pdf是可以正常重命名的。first_page = pdf.pages[0]是只取pdf的第一页,确认你的表格是不是在第一页,不是第一页就修改那个0。print一下first_page、tables看看都解析出来啥自己再改,白天没空帮你改了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-8 08:45:52 | 显示全部楼层
hrp 发表于 2020-7-8 08:11
那可能是你试的时候没解析到表格,我自己随便建的一个表格pdf是可以正常重命名的。first_page = pdf.page ...

好。。是在第一页的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-23 05:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表