xiaoqu525 发表于 2020-7-7 16:37:07

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

本帖最后由 xiaoqu525 于 2020-7-7 16:41 编辑

小白写了一个读取pdf内容并以pdf某个内容给PDF文件重命名的。在pycharm、官方IDE下直接运行系统不报错。然后我进行打包exe,弹出报错窗口,Failed to execute script XXXX(文件名)。。然后用pyinstaller -F -D XXX.py进行打包后,cmd运行exe文件,弹出报错信息。
代码:
import pdfplumber
import os
import tkinter.messagebox
files =
list = []
for i in files:# 遍历循环文件目录
    if i[-3:] == 'pdf':
      list.append(i)
for j in list:
    if j[-3:] != 'pdf':
      list.remove(j)# 删除后缀名不是pdf的文件
# print(list)
a = int(len(list))
name = ''
for index in range(a):
    b = list
    path = str(os.getcwd()) + '\\' + b
    with pdfplumber.open(path) as pdf:
      # 获取第一页
      first_page = pdf.pages
      # 解析文本
      text = first_page.extract_text()
      # 解析表格
      tables = first_page.extract_tables()
      pdf.close()
      for table in tables:
            table_str = str(table)
            table_str = table_str.replace(' ', '')
            for i in table_str:
                if i == 'W':
                  index_W = table_str.index('W')
                  # print(index_W)获取W出现的第一个索引值
                  name = table_str
    os.renames(path ,name + '.pdf')
tkinter.messagebox.showinfo("提示", "重命名已完成")



报错信息:

F:\pycharm_work\PDF_New02\dist\PDF_New>PDF_New.exe
Traceback (most recent call last):
File "PDF_New.py", line 35, in <module>
File "os.py", line 267, in renames
FileExistsError: 当文件已存在时,无法创建该文件。: 'F:\\pycharm_work\\PDF_New02\\dist\\PDF_New\\发货单.pdf' -> '.pdf'
Failed to execute script PDF_New

F:\pycharm_work\PDF_New02\dist\PDF_New>

Twilight6 发表于 2020-7-7 16:39:31



打包过程 cmd 会显示些错误,你认真看看,应该是打包时候缺少哪些依赖模块

xiaoqu525 发表于 2020-7-7 16:42:17

Twilight6 发表于 2020-7-7 16:39
打包过程 cmd 会显示些错误,你认真看看,应该是打包时候缺少哪些依赖模块

还不能上传图片,上传了代码和错误。。cmd打包的时候没有报错信息

Twilight6 发表于 2020-7-7 16:44:43

xiaoqu525 发表于 2020-7-7 16:42
还不能上传图片,上传了代码和错误。。cmd打包的时候没有报错信息



不是红色的 你看到 cmd 打包过程中有显示 Fild 这些字样就是缺少了某些东西

xiaoqu525 发表于 2020-7-7 16:46:11

Twilight6 发表于 2020-7-7 16:44
不是红色的 你看到 cmd 打包过程中有显示 Fild 这些字样就是缺少了某些东西

Microsoft Windows [版本 10.0.18363.720]
(c) 2019 Microsoft Corporation。保留所有权利。

C:\Users\qw914>f:

F:\>cd F:\pycharm_work\PDF_New02

F:\pycharm_work\PDF_New02>pyinstaller -F -D PDF_New.py
67 INFO: PyInstaller: 3.6
67 INFO: Python: 3.6.8
69 INFO: Platform: Windows-10-10.0.18362-SP0
69 INFO: wrote F:\pycharm_work\PDF_New02\PDF_New.spec
69 INFO: UPX is not available.
96 INFO: Extending PYTHONPATH with paths
['F:\\pycharm_work\\PDF_New02', 'F:\\pycharm_work\\PDF_New02']
97 INFO: checking Analysis
98 INFO: Building Analysis because Analysis-00.toc is non existent
98 INFO: Initializing module dependency graph...
107 INFO: Caching module graph hooks...
116 INFO: Analyzing base_library.zip ...
2488 INFO: Caching module dependency graph...
2608 INFO: running Analysis Analysis-00.toc
2610 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
required by C:\Users\qw914\AppData\Local\Programs\Python\Python36\python.exe
2663 INFO: Analyzing F:\pycharm_work\PDF_New02\PDF_New.py
3888 INFO: Processing pre-find module path hook   distutils
3888 INFO: distutils: retargeting to non-venv dir 'C:\\Users\\qw914\\AppData\\Local\\Programs\\Python\\Python36\\lib'
4694 INFO: Processing pre-safe import module hook   setuptools.extern.six.moves
5079 INFO: Processing pre-find module path hook   site
5080 INFO: site: retargeting to fake-dir 'C:\\Users\\qw914\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\PyInstaller\\fake-modules'
8049 INFO: Processing module hooks...
8049 INFO: Loading module hook "hook-Crypto.py"...
8076 INFO: Loading module hook "hook-distutils.py"...
8076 INFO: Loading module hook "hook-encodings.py"...
8157 INFO: Loading module hook "hook-lib2to3.py"...
8160 INFO: Loading module hook "hook-numpy.core.py"...
8299 INFO: Loading module hook "hook-numpy.py"...
8301 INFO: Loading module hook "hook-PIL.Image.py"...
8696 INFO: Loading module hook "hook-PIL.py"...
8697 INFO: Excluding import 'PyQt5'
8699 INFO:   Removing import of PyQt5.QtGui from module PIL.ImageQt
8699 INFO:   Removing import of PyQt5.QtCore from module PIL.ImageQt
8701 INFO: Import to be excluded not found: 'PyQt4'
8701 INFO: Import to be excluded not found: 'PySide'
8701 INFO: Excluding import 'tkinter'
8704 INFO:   Removing import of tkinter from module PIL.ImageTk
8705 INFO: Import to be excluded not found: 'FixTk'
8705 INFO: Loading module hook "hook-PIL.SpiderImagePlugin.py"...
8707 INFO: Excluding import 'tkinter'
8709 INFO: Import to be excluded not found: 'FixTk'
8709 INFO: Loading module hook "hook-pkg_resources.py"...
9010 INFO: Processing pre-safe import module hook   win32com
9236 INFO: Excluding import '__main__'
9238 INFO:   Removing import of __main__ from module pkg_resources
9239 INFO: Loading module hook "hook-pydoc.py"...
9239 INFO: Loading module hook "hook-PyQt5.py"...
9357 INFO: Loading module hook "hook-PyQt5.QtCore.py"...
9424 INFO: Loading module hook "hook-PyQt5.QtGui.py"...
9549 INFO: Loading module hook "hook-pythoncom.py"...
9805 INFO: Loading module hook "hook-pywintypes.py"...
10057 INFO: Loading module hook "hook-setuptools.py"...
10564 INFO: Loading module hook "hook-sysconfig.py"...
10565 INFO: Loading module hook "hook-win32com.py"...
10913 INFO: Loading module hook "hook-xml.etree.cElementTree.py"...
10914 INFO: Loading module hook "hook-xml.py"...
10960 INFO: Loading module hook "hook-_tkinter.py"...
11096 INFO: checking Tree
11096 INFO: Building Tree because Tree-00.toc is non existent
11097 INFO: Building Tree Tree-00.toc
11216 INFO: checking Tree
11217 INFO: Building Tree because Tree-01.toc is non existent
11218 INFO: Building Tree Tree-01.toc
11283 INFO: Looking for ctypes DLLs
11412 INFO: Analyzing run-time hooks ...
11417 INFO: Including run-time hook 'pyi_rth__tkinter.py'
11418 INFO: Including run-time hook 'pyi_rth_pkgres.py'
11420 INFO: Including run-time hook 'pyi_rth_win32comgenpy.py'
11422 INFO: Including run-time hook 'pyi_rth_multiprocessing.py'
11433 INFO: Looking for dynamic libraries
12195 INFO: Looking for eggs
12195 INFO: Using Python library C:\Users\qw914\AppData\Local\Programs\Python\Python36\python36.dll
12196 INFO: Found binding redirects:
[]
12204 INFO: Warnings written to F:\pycharm_work\PDF_New02\build\PDF_New\warn-PDF_New.txt
12308 INFO: Graph cross-reference written to F:\pycharm_work\PDF_New02\build\PDF_New\xref-PDF_New.html
12358 INFO: checking PYZ
12358 INFO: Building PYZ because PYZ-00.toc is non existent
12359 INFO: Building PYZ (ZlibArchive) F:\pycharm_work\PDF_New02\build\PDF_New\PYZ-00.pyz
13544 INFO: Building PYZ (ZlibArchive) F:\pycharm_work\PDF_New02\build\PDF_New\PYZ-00.pyz completed successfully.
13566 INFO: checking PKG
13566 INFO: Building PKG because PKG-00.toc is non existent
13567 INFO: Building PKG (CArchive) PKG-00.pkg
13587 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
13588 INFO: Bootloader C:\Users\qw914\AppData\Local\Programs\Python\Python36\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run.exe
13588 INFO: checking EXE
13589 INFO: Building EXE because EXE-00.toc is non existent
13589 INFO: Building EXE from EXE-00.toc
13590 INFO: Appending archive to EXE F:\pycharm_work\PDF_New02\build\PDF_New\PDF_New.exe
13606 INFO: Building EXE from EXE-00.toc completed successfully.
13610 INFO: checking COLLECT
13610 INFO: Building COLLECT because COLLECT-00.toc is non existent
13611 INFO: Building COLLECT COLLECT-00.toc
15988 INFO: Building COLLECT COLLECT-00.toc completed successfully.

F:\pycharm_work\PDF_New02>

xiaoqu525 发表于 2020-7-7 16:46:47

Twilight6 发表于 2020-7-7 16:44
不是红色的 你看到 cmd 打包过程中有显示 Fild 这些字样就是缺少了某些东西

大佬,这是打包信息。。

xiaoqu525 发表于 2020-7-7 16:47:28

Twilight6 发表于 2020-7-7 16:44
不是红色的 你看到 cmd 打包过程中有显示 Fild 这些字样就是缺少了某些东西

我有加其他群,没人理我,自己百度解决的弄了两天了。。还是没整好,求求大佬帮我看看咋样能处理好。。。欲哭无泪啊

Twilight6 发表于 2020-7-7 16:49:37

xiaoqu525 发表于 2020-7-7 16:47
我有加其他群,没人理我,自己百度解决的弄了两天了。。还是没整好,求求大佬帮我看看咋样能处理好。。。 ...

确实...打包信息没看出错误

xiaoqu525 发表于 2020-7-7 16:50:21

Twilight6 发表于 2020-7-7 16:49
确实...打包信息没看出错误

就好诡异啊。。。

Twilight6 发表于 2020-7-7 16:51:58

xiaoqu525 发表于 2020-7-7 16:50
就好诡异啊。。。

你代码方便发不? 我试着看看

xiaoqu525 发表于 2020-7-7 16:52:58

Twilight6 发表于 2020-7-7 16:51
你代码方便发不? 我试着看看

我已经发上来啦。你康康

Twilight6 发表于 2020-7-7 17:09:14

xiaoqu525 发表于 2020-7-7 16:52
我已经发上来啦。你康康

失败...我也不行

Twilight6 发表于 2020-7-7 17:13:20

xiaoqu525 发表于 2020-7-7 16:52
我已经发上来啦。你康康

FileExistsError: 当文件已存在时,无法创建该文件。: 'F:\\pycharm_work\\PDF_New02\\dist\\PDF_New\\发货单.pdf' -> '.pdf'
这个报错的话你换个文件夹应该就能解决吧?

xiaoqu525 发表于 2020-7-7 17:17:26

Twilight6 发表于 2020-7-7 17:13


文件只能放在.py或者.exe下。新建一个文件夹再移动过去怎么弄啊

xiaoqu525 发表于 2020-7-7 17:33:13

Twilight6 发表于 2020-7-7 17:13


重命名再移动,会不会也报占用进程.....还是移动再重命名...待会试试

Twilight6 发表于 2020-7-7 17:33:59

xiaoqu525 发表于 2020-7-7 17:33
重命名再移动,会不会也报占用进程.....还是移动再重命名...待会试试



{:7_119:}我也搞不明白了,帮不到你了,只能靠你自己了

hrp 发表于 2020-7-7 17:51:28

本帖最后由 hrp 于 2020-7-7 18:04 编辑

我觉得可能是因为你的tables里面存在相同的字符串,导致最后出来的name出现相同的情况,所以第二次重命名失败。还有一种可能:os.renames的参数path是完整路径,而name+'.pdf'不是完整路径,可能有问题(因为renames是可以连目录路径一起重命名的,所以你一个参数带完整路径一个没有,问题很可能出在这,建议楼主把两个参数都带完整路径,原路径也不要改变,或者用rename来重命名)。楼主还犯了个错误:起的变量名list和内置list类重名了。

xiaoqu525 发表于 2020-7-7 18:27:46

hrp 发表于 2020-7-7 17:51
我觉得可能是因为你的tables里面存在相同的字符串,导致最后出来的name出现相同的情况,所以第二次重命名失 ...

谢谢大佬指点,我试试

xiaoqu525 发表于 2020-7-7 19:07:00

hrp 发表于 2020-7-7 17:51
我觉得可能是因为你的tables里面存在相同的字符串,导致最后出来的name出现相同的情况,所以第二次重命名失 ...

# coding = utf-8
import pdfplumber
import os
import tkinter.messagebox
files =
list_pdf = []
for i in files:# 遍历循环文件目录
    if i[-3:] == 'pdf':
      list_pdf.append(i)
for j in list_pdf:
    if j[-3:] != 'pdf':
      list_pdf.remove(j)# 删除后缀名不是pdf的文件
# print(list)
a = int(len(list_pdf))
name = ''
path_new = ''
for index in range(a):
    b = list_pdf
    path_old = str(os.getcwd()) + '\\' + b
    #print(path)
    with pdfplumber.open(path_old) as pdf:
      # 获取第一页
      first_page = pdf.pages
      # 解析文本
      text = first_page.extract_text()
      # 解析表格
      tables = first_page.extract_tables()
      pdf.close()
      for table in tables:
            table_str = str(text)
            table_str = table_str.replace(' ', '')
            for i in table_str:
                if i == 'W':
                  index_W = table_str.index('W')
                  #print(index_W)#获取W出现的第一个索引值
                  name = table_str
                  path_new = str(os.getcwd()) + '\\' + name + '.pdf'
                  break
      #print(path_new)
    os.renames(path_old ,path_new)
tkinter.messagebox.showinfo("提示", "重命名已完成")



我按照大佬说的进行了一下改动,发现还是一样的结果提示进程占用

hrp 发表于 2020-7-7 19:46:47

xiaoqu525 发表于 2020-7-7 19:07
# coding = utf-8
import pdfplumber
import os


独占模式打开文件没关闭?具体报错信息是什么
页: [1] 2
查看完整版本: :FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。