pandas:文件路径和文件名

时间:2017-05-30 08:09:55

标签: python csv pandas special-characters

我正在尝试使用pandas.read_csv从某些.csv文件中获取数据。只要文件名或文件路径中没有重音(例如ä,é,ü),这就可以正常工作。只要我使用düm1.csv等文件名,就会收到以下错误:OSError: Initializing from file failed。我的代码是:

dum1 = pd.read_csv(r"C:\Users\MyName\Desktop\dumm12\düm1.csv", sep = ";", decimal = ",", encoding = "utf-8")

我正在使用pandas 0.20.1和python 3.6.0。我发现这在以前的版本中是一个问题,但我认为它已经解决了。有想法该怎么解决这个吗?我也发现了这个: https://github.com/pandas-dev/pandas/issues/15086

pd.show_versions()的输出:

安装版本 提交:无 python:3.6.0.final.0 python-bits:64 操作系统:Windows 操作系统发布:10 机器:AMD64 处理器:Intel64 Family 6 Model 78 Stepping 3,GenuineIntel byteorder:小 LC_ALL:无 LANG:en LOCALE:None.None

熊猫:0.20.1 pytest:3.0.5 点数:9.0.1 setuptools:27.2.0 Cython:没有 numpy:1.11.3 scipy:0.18.1 xarray:没有 IPython:5.2.2 狮身人面像:1.5.1 patsy:0.4.1 dateutil:2.6.0 pytz:2016.10 blosc:没有 瓶颈:1.2.0 表:3.2.2 numexpr:2.6.2 羽毛:没有 matplotlib:2.0.0 openpyxl:2.4.1 xlrd:1.0.0 xlwt:1.2.0 xlsxwriter:0.9.6 lxml:3.7.3 bs4:4.5.3 html5lib:0.999 sqlalchemy:1.1.5 pymysql:没有 psycopg2:没有 jinja2:2.9.5 s3fs:无 pandas_gbq:没有 pandas_datareader:无

3 个答案:

答案 0 :(得分:3)

我有类似的问题。在Windows系统中,pandas.read_csv与Python 3.6一起出现问题。

Python 3.6从" mbcs"更改Windows文件系统编码to" UTF-8"。见Python PEP 529。您可以使用命令sys.getfilesystemencoding()来获取当前文件系统编码

我得到两个解决方案:

1.-使用此代码更改所有应用程序以使用先前的Python< = 3.5编码(" mbcs")

import sys
sys._enablelegacywindowsfsencoding()

2.-将文件指针传递给pandas.read_csv

with open("C:\Users\MyName\Desktop\dumm12\düm1.csv", 'r') as fp:
        dum1 = pd.read_csv(fp, sep = ";", decimal = ",", encoding = "utf-8")

你可以看到这篇文章:pandas.read_csv can't import file with accent mark in path

答案 1 :(得分:1)

我在创建假文件'düm1.csv'时测试了该名称。

我跑的时候:

public static string GetoptionsetText(string entityName, string attributeName, int optionSetValue, IOrganizationService service)
    {
                 string AttributeName = attributeName;
        string EntityLogicalName = entityName;
        RetrieveEntityRequest retrieveDetails = new RetrieveEntityRequest
        {
            EntityFilters = EntityFilters.All,
            LogicalName = entityName
        };
        RetrieveEntityResponse retrieveEntityResponseObj = (RetrieveEntityResponse)service.Execute(retrieveDetails);
        Microsoft.Xrm.Sdk.Metadata.EntityMetadata metadata = retrieveEntityResponseObj.EntityMetadata;
        Microsoft.Xrm.Sdk.Metadata.PicklistAttributeMetadata picklistMetadata = metadata.Attributes.FirstOrDefault(attribute => String.Equals(attribute.LogicalName, attributeName, StringComparison.OrdinalIgnoreCase)) as Microsoft.Xrm.Sdk.Metadata.PicklistAttributeMetadata;
        Microsoft.Xrm.Sdk.Metadata.OptionSetMetadata options = picklistMetadata.OptionSet;

        IList<OptionMetadata> OptionsList = (from o in options.Options
                                             where o.Value.Value == optionSetValue
                                             select o).ToList();
        string optionsetLabel = (OptionsList.First()).Label.UserLocalizedLabel.Label;
        return optionsetLabel;
    }

我没有OSError,我的Ipython中的文件已打开。

df = pd.read_csv('düm1.csv',sep=';')

您是否尝试过无编码?没有口音?

℃。

答案 2 :(得分:0)

issue至今尚未解决。等到公关。或者尝试使用Python 2.7我想这可能有效