python-3.x 尝试使用os.rename重命名文件会抛出FileNotFoundError:[错误2]

wfauudbj  于 2023-04-22  发布在  Python
关注(0)|答案(3)|浏览(255)

我得到了这个目录,里面有这些文件:

drwxr-xr-x 2 kali kali 4096 May 19 04:50 .
drwxr-xr-x 5 kali kali 4096 May 19 05:11 ..
-rw-r--r-- 1 kali kali    0 May 19 04:50 jane_contact_07292018.csv
-rw-r--r-- 1 kali kali    0 May 19 04:50 jane_profile_07272018.doc
-rw-r--r-- 1 kali kali    0 May 19 04:50 janez_profile_11042019.doc
-rw-r--r-- 1 kali kali    0 May 19 04:50 kwood_pic_04032017.jpg
-rw-r--r-- 1 kali kali    0 May 19 04:50 kwood_profile_04022017.doc
-rw-r--r-- 1 kali kali  412 May 19 04:50 list.txt
-rw-r--r-- 1 kali kali    0 May 19 04:50 pchow_pic_05162019.jpg

我想把jane_* 开始的两个文件重命名为jdoez_*。这是我的代码:

import sys
import os

path = os.listdir("/home/user/Downloads/student-02-c3f0f7fe19ef/data/")
for i in path:
        print(i)
        if "jane" in i:
                os.rename(i, i.replace("jane", "jdoe"))

当我运行它时,我得到这个错误消息:

janez_profile_11042019.doc
Traceback (most recent call last):
  File "/home/user/Downloads/student-02-c3f0f7fe19ef/scripts/changeJane.py", line 14, in <module>
    os.rename(i, i.replace("jane", "jdoe"))
FileNotFoundError: [Errno 2] No such file or directory: 'janez_profile_11042019.doc' -> 'jdoez_profile_11042019.doc'
ql3eal8s

ql3eal8s1#

使用绝对路径重命名

import sys
import os

folder = "/home/user/Downloads/student-02-c3f0f7fe19ef/data/"

for file in os.listdir(folder):
        if "jane" in file:
                original = os.path.join(folder, file)
                renamed = os.path.join(folder, file.replace("jane", "jdoe"))
                os.rename(original, renamed)
e0uiprwp

e0uiprwp2#

您应该添加此代码行。
它将默认的OS目录更改为下面的一个。

os.chdir("/home/user/Downloads/student-02-c3f0f7fe19ef/data/")

完整代码:

import sys
import os

os.chdir("/home/user/Downloads/student-02-c3f0f7fe19ef/data/")
path = os.listdir("/home/user/Downloads/student-02-c3f0f7fe19ef/data/")
for i in path:
        print(i)
        if "jane" in i:
                os.rename(i, i.replace("jane", "jdoe"))
lc8prwob

lc8prwob3#

HTTPError(400, f'Cannot rename file or directory {os_path!r}') NameError: name 'os_path' is not defined.

我得到了上面的错误,当我将我的jupyter源文件移动到与.ipynb检查点文件夹相同的位置时,它得到了解决。

相关问题