错误3:在python中重命名文件

时间:2016-09-27 16:04:17

标签: python

新手Python问题。

我试图重命名目录中的文件......

路径的值是

C:\tempdir\1\0cd3a8asdsdfasfasdsgvsdfc1.pdf

,而值newfile是

C:\tempdir\1\newfilename.pdf

origfile = path
newfile = path.split("\\")
newfile = newfile[0]+"\\"+newfile[1]+"\\"+newfile[2]+"\\"+text+".pdf"

os.rename(path, newfile)
print origfile
print newfile

我收到以下错误...

os.rename(path, newfile)
WindowsError: [Error 3] The system cannot find the path specified

我知道目录和文件很好,因为我可以在上面调用os.stats()。我已经更改为newfile的值只包含新文件名但收到相同的错误(在阅读关于rename()的python文档后)

我导入的图书馆是....

import sys
import os
import string
from os import path
import re
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from cStringIO import StringIO

我已经阅读了有关此主题的其他一些主题 - 与绝对路径和相对路径有关。显然,我的意图是使用绝对路径。我的变量是字符串变量,另一个是......

origfile = "C:\tempdir\1\0cd3a8asdsdfasfasdsgvsdfc1.pdf"

这够了吗?或者我应该使用其他声明来告诉python这是一条路径?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方式吗?您可能会发现使用不同的API时重命名更容易。

import pathlib
parent = pathlib.Path('C:/') / 'tempdir' / '1'
old = parent / '0cd3a8asdsdfasfasdsgvsdfc1.pdf'
new = parent / 'newfilename.pdf'
old.rename(new)

使用pathlib模块使得以跨平台方式处理路径变得更加简单。

答案 1 :(得分:0)

您最好使用ntpath(解释为here)仅修改您的文件名:

>>> filepath = 'C:\\tempdir\\1\\0cd3a8asdsdfasfasdsgvsdfc1.pdf'
>>> dirname, filename = ntpath.dirname(filepath), ntpath.basename(filepath)
>>> dirname
'C:\\tempdir\\1'
>>> filename
'0cd3a8asdsdfasfasdsgvsdfc1.pdf'

因此,您可能会按如下方式使用重命名:

>>> os.rename(filepath, dirname + ntpath.sep + 'newfilename.pdf')

使用ntpath.sep使用适当的分隔符。