Questions tagged «python-2.x»

对于特定于该语言2.x版的Python编程问题。如果您的问题不是特定于版本的,则使用更通用的[tag:python]标记。

7
如何表示未使用的函数参数?
当“解构”一个元组时,我可以_用来表示我不感兴趣的元组元素,例如 >>> a,_,_ = (1,2,3) >>> a 1 使用Python 2.x,如何使用函数参数表达相同的含义?我尝试使用下划线: >>> def f(a,_,_): return a ... File "<stdin>", line 1 SyntaxError: duplicate argument '_' in function definition 我还试图完全忽略该论点: >>> def f(a,,): return a File "<stdin>", line 1 def f(a,,): return a ^ SyntaxError: invalid syntax 还有另一种方法可以达到相同目的吗?

6
在Python 2中,如何在父范围中写入变量?
我在函数内有以下代码: stored_blocks = {} def replace_blocks(m): block = m.group(0) block_hash = sha1(block) stored_blocks[block_hash] = block return '{{{%s}}}' % block_hash num_converted = 0 def convert_variables(m): name = m.group(1) num_converted += 1 return '<%%= %s %%>' % name fixed = MATCH_DECLARE_NEW.sub('', template) fixed = MATCH_PYTHON_BLOCK.sub(replace_blocks, fixed) fixed = MATCH_FORMAT.sub(convert_variables, fixed) 添加元素可以stored_blocks正常工作,但是我不能num_converted在第二个子功能中增加: UnboundLocalError:分配前已引用局部变量“ …

1
如何连接str和int对象?
如果我尝试执行以下操作: things = 5 print("You have " + things + " things.") 我在Python 3.x中收到以下错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: must be str, not int ...以及Python 2.x中的类似错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' …


3
如何在Python C-API中动态创建派生类型
假设我们具有在编写用于Python的C扩展模块Noddy的教程中定义的类型。现在我们要创建一个派生类型,仅覆盖的__new__()方法Noddy。 当前,我使用以下方法(去除了可读性的错误检查): PyTypeObject *BrownNoddyType = (PyTypeObject *)PyType_Type.tp_alloc(&PyType_Type, 0); BrownNoddyType->tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE; BrownNoddyType->tp_name = "noddy.BrownNoddy"; BrownNoddyType->tp_doc = "BrownNoddy objects"; BrownNoddyType->tp_base = &NoddyType; BrownNoddyType->tp_new = BrownNoddy_new; PyType_Ready(BrownNoddyType); 这可行,但是我不确定这是否是正确的方法。我本来也希望设置Py_TPFLAGS_HEAPTYPE标志,因为我在堆上动态分配了类型对象,但这样做会导致解释器出现段错误。 我还考虑过显式调用 type()usingPyObject_Call()或类似方法,但我放弃了这个想法。我需要将函数包装BrownNoddy_new()在Python函数对象中,并创建一个映射__new__到该函数对象的字典,这似乎很愚蠢。 最好的方法是什么?我的方法正确吗?我错过了接口功能吗? 更新资料 在python-dev邮件列表(1) (2)上,有两个主题相关的主题。从这些线程和一些实验中,我得出结论,Py_TPFLAGS_HEAPTYPE除非类型是通过调用分配的,否则不应设置type()。在这些线程中有不同的建议,无论是手动分配类型还是调用类型更好type()。如果只有我知道包装应该放在tp_new插槽中的C函数的推荐方式是什么,我会对后者感到满意。对于常规方法,此步骤很容易-我可以使用它PyDescr_NewMethod()来获取合适的包装对象。我不知道如何为我的__new__()方法创建这样的包装对象,也许我需要未记录的函数PyCFunction_New()来创建这样的包装对象。

6
将“ yield from”语句转换为Python 2.7代码
我在Python 3.2中有一个下面的代码,我想在Python 2.7中运行它。我确实进行了转换(missing_elements在两个版本中都放了代码),但是我不确定这是否是最有效的方法。基本上,如果函数的yield from上半部和下半部有两个类似下面的调用,会发生什么情况missing_element?是否将两个半部分(上半部分和下半部分)中的条目彼此追加到一个列表中,以便父递归函数与yield from调用一起使用,并将两个半部分一起使用? def missing_elements(L, start, end): # Python 3.2 if end - start <= 1: if L[end] - L[start] > 1: yield from range(L[start] + 1, L[end]) return index = start + (end - start) // 2 # is the lower half consecutive? consecutive_low = L[index] == …

3
如何在Python中使用subprocess.check_output()?
我找到了有关subprocess.check_output()的文档,但是找不到带有参数的文档,而且该文档也不是很深入。我正在使用Python 3(但试图通过Python 3运行Python 2文件) 我正在尝试运行以下命令: python py2.py -i test.txt -i是argparse的位置参数,test.txt是-i,py2.py是要运行的文件 我尝试了很多(无效)变体,包括: py2output = subprocess.check_output([str('python py2.py '),'-i', 'test.txt']) py2output = subprocess.check_output([str('python'),'py2.py','-i', test.txt'])


8
如何使用Python从URL读取CSV文件?
当我卷曲到API调用链接时http://example.com/passkey=wedsmdjsjmdd curl 'http://example.com/passkey=wedsmdjsjmdd' 我以csv文件格式获取员工输出数据,例如: "Steve","421","0","421","2","","","","","","","","","421","0","421","2" 如何使用python解析。 我试过了: import csv cr = csv.reader(open('http://example.com/passkey=wedsmdjsjmdd',"rb")) for row in cr: print row 但它不起作用,我出现了一个错误 http://example.com/passkey=wedsmdjsjmdd No such file or directory: 谢谢!

5
SQLite,python,unicode和非utf数据
我首先尝试使用python将字符串存储在sqlite中,并得到以下消息: sqlite3.ProgrammingError:除非使用可以解释8位字节串的text_factory(如text_factory = str),否则不得使用8位字节串。强烈建议您改为将应用程序切换为Unicode字符串。 好的,我切换到Unicode字符串。然后我开始收到消息: sqlite3.OperationalError:无法解码为文本为“ SigurRós”的UTF-8列“ tag_artist” 尝试从数据库检索数据时。进行了更多研究,我开始在utf8中对其进行编码,但随后“ SigurRós”开始看起来像“ SigurRós” 注意: 正如@John Machin指出的那样,我的控制台设置为在“ latin_1”中显示。 是什么赋予了?看完这篇文章并描述了我所处的完全相同的情况之后,似乎该建议是忽略其他建议并毕竟使用8位字节串。 在开始此过程之前,我对unicode和utf不太了解。在过去的几个小时中,我学到了很多东西,但是我仍然不知道是否有一种方法可以将“ó”从拉丁文1正确地转换为utf-8,而不是对其进行处理。如果没有,为什么sqlite强烈建议我将应用程序切换为unicode字符串? 我将使用最近24小时内我学到的所有内容的摘要和一些示例代码来更新此问题,以便穿鞋的人可以轻松获得指南。如果我发布的信息有误或以任何方式引起误导,请告诉我,我会更新,或者你们中的一位资深人士可以更新。 答案摘要 让我先说一说我了解的目标。如果要在各种编码之间进行转换,则处理各种编码的目的是要了解源编码是什么,然后使用该源编码将其转换为unicode,然后将其转换为所需的编码。Unicode是一个基础,编码是该基础的子集的映射。utf_8可以容纳unicode中的每个字符,但是由于它们与例如latin_1不在同一个位置,因此,以utf_8编码并发送到latin_1控制台的字符串看起来不会像您期望的那样。在python中,进入unicode并转换为另一种编码的过程如下: str.decode('source_encoding').encode('desired_encoding') 或者如果str已经在unicode中 str.encode('desired_encoding') 对于sqlite,我实际上并不想再次对其进行编码,我想对其进行解码并将其保留为unicode格式。在尝试使用python中的unicode和编码时,可能需要注意以下四点。 您要使用的字符串的编码以及要获取的字符串的编码。 系统编码。 控制台编码。 源文件的编码 详细说明: (1)从源读取字符串时,它必须具有某种编码,例如latin_1或utf_8。就我而言,我从文件名中获取字符串,所以不幸的是,我可能会获得任何类型的编码。Windows XP使用UCS-2(Unicode系统)作为其本机字符串类型,这对我来说似乎是作弊行为。对我来说幸运的是,大多数文件名中的字符都不会由多个源编码类型组成,而且我认为我的全部要么完全是latin_1,完全是utf_8,要么仅仅是纯ascii(这是两个字符的子集)那些)。因此,我只是阅读它们并对其进行解码,就好像它们仍在latin_1或utf_8中一样。不过,在Windows上的文件名中,可能有latin_1和utf_8以及其他任何字符混合在一起的可能。有时这些字符会显示为方框,有时候,它们看起来像是被弄乱了,而有时候,它们看起来是正确的(带重音的字符等等)。继续。 (2)Python具有默认的系统编码,该默认系统编码会在python启动时设置,并且无法在运行时更改。有关详细信息,请参见此处。肮脏的摘要...好吧,这是我添加的文件: \# sitecustomize.py \# this file can be anywhere in your Python path, \# but it usually goes in …

1
Brew-重新安装python @ 2
我在brew上遇到openssl和python @ 2的问题,这里已经解释了(未解决)。已记录的重新安装Python和openssl的解决方法无法正常工作,因此我决定卸载并重新安装Python。 问题是,当您尝试通过brew安装Python 2时,会收到以下消息: brew install python@2 Error: No available formula with the name "python@2" ==> Searching for a previously deleted formula (in the last month)... Warning: homebrew/core is shallow clone. To get complete history run: git -C "$(brew --repo homebrew/core)" fetch --unshallow python@2 was deleted from homebrew/core in …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.