我知道要编写好的Python代码,我应该保持我的行不超过79个字符.
这在大多数时候都很好,但如果我有各种嵌套的for循环和if语句本身嵌套在一个类中,我可能很容易发现我有5或6个缩进(即20-24个字符,如果我缩进4个在我开始之前留出时间.然后79字符限制变得相当棘手.我知道各种技巧,如括号内的隐式延续,并使用括号来连接长字符串,但即便如此,它也有点繁琐.
那么,你们的大师们建议什么?
缩进2个空格而不是4个空格会有所帮助,但这被认为是好风格吗?不确定它是否有助于使我的代码更具可读性,并且我注意到PEP8说要使用4个空格.
如果我发现我有多个级别的缩进,那么也许我签署的是我写的是错误的代码?如果是这样,任何有用的提示或技巧,以避免过多的嵌套?
我是否正确地试图坚持79个字符的建议?
或者我是否只需要习惯于多行中的大量语句?
谢谢亚当
我已经有一个用 Python 2 编写的 Web 应用程序,它运行在 WSGI(特别是 OpenERP Web 服务器)上。
我想编写一个新的 Web 应用程序,它可以在同一台服务器上运行(Ubuntu 上的 Apache 2),但使用 WSGI 和 Python 3。这两个应用程序将在不同的端口上。
那可能吗?
我正在尝试编写一些Python 3代码来处理通过Web表单(使用wsgi)上传的csv文件。我设法将文件上传了,但是我在努力使用Python的csv工具来处理它。这似乎与字节vs字符串有关。
这是我尝试过的:
import cgi, csv
form = cgi.FieldStorage(fp=environ['wsgi.input'],environ=environ)
upload = form['upload']
file = upload.file
data = csv.DictReader(file)
for line in data:
#Do stuff here to process csv file
Run Code Online (Sandbox Code Playgroud)
它到达“用于数据行”的位置,然后出现以下错误消息:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
Run Code Online (Sandbox Code Playgroud)
所以问题是我的文件是二进制文件,但是csv需要一个字符串文件,对吗?知道我该如何解决吗?
我想到的一种可能的解决方法是,仅读取文件的行而不使用csv模块并手动处理数据,这虽然可行,但似乎有点麻烦。如果可能的话,最好使用Python的csv模块的功能。
从中上传文件的Web表单具有属性
enctype="multipart/form-data"
Run Code Online (Sandbox Code Playgroud)
上传文件需要我收集的内容。