20

在尝试阅读该csv.py文件的源代码(作为在另一个上下文中实现我自己的writer类的指南)时,我发现该文件中的许多功能又是从名为的东西中导入的_csv

 from _csv import Error, __version__, writer, reader, register_dialect, \
                  unregister_dialect, get_dialect, list_dialects, \
                  field_size_limit, \
                  QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE, \
                  __doc__

我在我的系统上找不到任何具有此名称的文件(包括搜索具有隐藏属性集的文件),尽管我可以import _csv从 Python shell 中完成。

这个模块是什么,可以阅读吗?

4

3 回答 3

19

_csvcsv模块的 C“主干”。它的来源在Modules/_csv.c. 您可以通过 Python 命令提示符找到该模块的编译版本:

>>> import _csv
>>> _csv
<module '_csv' from '/usr/lib/python2.6/lib-dynload/_csv.so'>

Python 源代码中没有隐藏文件 :)

于 2012-10-18T17:06:46.863 回答
14

不同意拉尔斯曼的回答。

PEP8中有官方对模块命名约定的解释:

当用 C 或 C++ 编写的扩展模块附带提供更高级别(例如更面向对象)接口的 Python 模块时,C/C++ 模块具有前导下划线(例如 _socket)

于 2012-10-18T17:10:49.957 回答
0

答案已被接受,但我想添加一些细节,因为我有与 OP 相同的问题。

.csv 文件的内容只是一个带有值的逗号分隔文档:

first,last
john,doe
...

您可以通过在记事本中打开一个 .csv 文件来进行测试

如果你想创建一个 .csv 文件,你可以写入它,你会得到你想要的 csv 文件。

with open('test.csv', 'w') as file:
    file.write('first,last\n')
    file.write('John,Doe\n')

如果您想在不使用“import csv”的情况下写入 .csv 文件,则简单的解决方案。

于 2018-01-18T15:43:10.967 回答