【问题标题】:Coding issue in folder path文件夹路径中的编码问题
【发布时间】:2018-05-08 10:29:54
【问题描述】:

我有一个文件夹路径,其中包含一些西里尔字母,可以阻止另一个脚本的进程。我需要得到一个没有西里尔字母的文件夹路径,但 python 不返回它。

文件夹是C:\Users\PereverzevPV\Documents\Инв

我有:

import os
folder = os.getcwd()
print folder

无论我设置什么编码,输出都是空的。我需要得到

'C:\\Users\\PereverzevPV\\Documents\\\xd0\x98\xd0\xbd\xd0\xb2'

【问题讨论】:

  • 在脚本的第一个添加:# coding: UTF-8
  • 已添加。还是得到这个C:\Users\PereverzevPV\Documents\Инв

标签: python encoding utf cyrillic


【解决方案1】:

试试这个:

# coding: UTF-8

import os

os.getcwd().encode('utf-8').decode('utf-8')

我们需要先对 CWD 进行编码,然后再对他进行解码

【讨论】:

    【解决方案2】:

    如果您以 unicode 格式传递文件路径,则返回也将以 unicode 格式传递:

    >>> for dirpath, dirnames, filenames in os.walk(u"D:\\SO"):
        print dirnames
    
    
    [u'\u0142', u'\u0418\u043d\u0432']
    

    也许您可以使用它,然后根据需要重新组合路径。

    【讨论】:

      【解决方案3】:

      这可能会有所帮助。您的问题是,您没有转义 \\U\P\D 不是有效的 utf-8 字符。

      # coding: UTF-8
      
      txt = r"C:\Users\PereverzevPV\Documents\Инв"
      txt = "C:\\Users\\PereverzevPV\\Documents\\Инв"
      
      esc_txt = txt.encode('utf-8')
      
      print(esc_txt)
      

      【讨论】:

      • 它给出了一个错误UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 32: ordinal not in range(128)
      猜你喜欢
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多