Python。如果文件名中包含特殊字符,则尝试使用文件名创建新目录时出错

标签 python directory

我的脚本搜索它所在的目录,并使用它找到的文件名创建新目录,并将它们移动到该目录:John-doe-taxes.hrb -> John-doe/John-does-taxes。 hrb。它工作正常,直到遇到变音字符,然后它将创建目录并返回“错误 2”,表示找不到该文件。我对编程相当陌生,我找到的答案是添加

编码:utf-8

行到不起作用的文件我相信因为我没有在我的代码中使用元音变音我正在处理元音变音文件。我很好奇的一件事是,这个问题是否只发生在变音符号或其他特殊字符上?这是我正在使用的代码,感谢您提供的任何建议。

import os
import re
from os.path import dirname, abspath, join


dir = dirname(abspath(__file__))
(root, dirs, files) = os.walk(dir).next() 
p = re.compile('(.*)-taxes-') 
count = 0
for file in files:
    match = p.search(file)
    if match:
        count = count + 1
        print("Files processed: " + str(count))
        dir_name = match.group(1) 
        full_dir = join(dir, dir_name)
        if not os.access(full_dir, os.F_OK):
            os.mkdir(full_dir)
        os.rename(join(dir, file), join(full_dir, file)) 
raw_input()

最佳答案

我认为您的问题是将 str 传递给不在系统编码中的 os.rename 。只要文件名仅使用 ascii 字符,这就可以工作,但是超出该范围,您可能会遇到问题。

最好的解决方案可能是使用 unicode。如果给文件系统函数提供 unicode 参数,它们应该返回 unicode 字符串。 open 应该可以在使用 unicode 文件名的 Windows 上正常工作。

如果你这样做:

dir = dirname(abspath(unicode(__file__)))

那么您应该全程使用 unicode 字符串。

关于Python。如果文件名中包含特殊字符,则尝试使用文件名创建新目录时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15468709/

相关文章:

python - PyCharm SciView 未正确显示数据帧

python - 无法使用 Django 和 Python 在 URL 查询字符串中传递值

python - Django:如何从 .css 文件链接到静态文件目录?

batch-file - 如何才能使程序在打开文件夹时运行?

自动创建文件结构表示的 PHP 脚本

c# - 如何显示目录中的文件

android - 如何在 Android Root 上使用我的应用程序名称创建文件夹

python - SyntaxError : invalid syntax on lib/python3. 8/site-packages/sql_server/pyodbc/base.py django 在 Linux 上部署

python - 表格图像的格式问题

Perl - 我可以获得与脚本所在位置和执行位置相关的路径吗?