小编use*_*312的帖子

getiterator()和iter()wrt与lxml有什么区别

正如问题所说,有什么区别:

x.getiterator()并且x.iter(),xElementTree或Element在哪里?因为它似乎适用于两者,我已经尝试过了.

如果我在某处错了,请纠正我.

python lxml

4
推荐指数
2
解决办法
1430
查看次数

无法修改全局int,但可以修改列表.怎么样?

LISTL = [] VAR1 = 0 def foo():... VAR1 + = 1 ...返回VAR1 ...

在调用时foo(),我收到此错误:

UnboundLocalError: local variable 'VAR1' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

但是,请考虑清单 LISTL

>>> def foo(x):
...     LISTL.append(x)
...     return LISTL
... 
>>> foo(5)
[5]
Run Code Online (Sandbox Code Playgroud)

这按预期工作.问题是为什么列表中的追加有效,但我无法更改int?

另外,这是在Python中声明全局的正确方法吗?(在导入声明之后)

python

4
推荐指数
1
解决办法
803
查看次数

编写文档字符串 - 指定函数参数和返回

假设我有一个功能,说:

>>> def foo(a):
        return a+1
Run Code Online (Sandbox Code Playgroud)

我想为它写一个文档字符串.

在docstring中指定它需要a并返回+ 1的约定是什么?

python docstring

3
推荐指数
1
解决办法
3105
查看次数

用参数启动gnome-terminal

使用Python,我想在新的终端窗口中启动一个进程,因为这样可以向用户显示正在发生的事情,因为涉及多个进程.

我试过做:

>>> import subprocess
>>> subprocess.Popen(['gnome-terminal'])
<subprocess.Popen object at 0xb76a49ac>
Run Code Online (Sandbox Code Playgroud)

这按照我的意愿工作,打开一个新窗口.

但是如何将参数传递给它呢?就像,当终端启动时,我希望它说,运行ls.但是这个:

>>> subprocess.Popen(['gnome-terminal', 'ls'])
<subprocess.Popen object at 0xb76a706c>
Run Code Online (Sandbox Code Playgroud)

这再次有效,但ls命令不起作用:启动空白终端窗口.

所以我的问题是,如何使用指定的命令启动终端窗口,以便在窗口打开时运行该命令.

PS:我的目标只是 Linux.

python terminal subprocess

3
推荐指数
2
解决办法
7227
查看次数

从两个iterables创建一个字典并消耗它们

假设我有两个列表,我想从中创建一个字典.喜欢:

>>> l = [1, 2, 3, 4, 5]
>>> x = ['a', 'b', 'c']
>>> dict(zip(l, x))
{1: 'a', 2: 'b', 3: 'c'}
Run Code Online (Sandbox Code Playgroud)

这个工程,我会想它和自名单长度不等,元素45被排斥在外,并没有对他们没有相应的值.这是预期的.

但是,如果我想要一个值,比如None钥匙l呢?我希望输出为:

{1: 'a', 2: 'b', 3: 'c', 4: None, 5: None}

我认为其中一个解决方案是迭代两者,比较它们的长度并None在需要的地方追加.我有一个可行的解决方案,但我想知道它是否可以以更容易和更短的方式完成?

python dictionary iterable

3
推荐指数
1
解决办法
156
查看次数

Python ftplib和storbinary

试图了解其ftplib工作原理.

我正在尝试将文件保存到FTP服务器并实现回调.

文件说:

FTP.storbinary(command, file[, blocksize, callback, rest])
Run Code Online (Sandbox Code Playgroud)

callback 函数定义如文档中所示:

为每个接收到的数据块调用回调函数,使用单个字符串参数给出数据块.

我该如何实现这个回调?retrbinary(读取文件)上的示例回调可能如下所示:

def handle(block):
    f.write(block)
    print ".", 
Run Code Online (Sandbox Code Playgroud)

这将显示正在下载的文件的进度,f即文件对象.

但我对如何实现这一点感到茫然storbinary.

有关如何做到这一点的任何建议?我知道block参数,但如何通过上传调整?

更新:

我有一个回调上传为:

def handle(block):
    f.read(block)
    print ".",
Run Code Online (Sandbox Code Playgroud)

但正如预期的那样,它给出了错误:

an integer is required

传球int(block)也行不通.

python ftplib

3
推荐指数
1
解决办法
1万
查看次数

使用花括号初始化C char数组,是否可以省略空字节'\ 0'?

所以我读到了:

char pattern[] = "ould";

基本上是更简单的写作方式:

char pattern[] = { 'o', 'u', 'l', 'd', '\0' };

我知道null字符\0标志着字符串的结束,但如果我写它如下:

char pattern[] = { 'o', 'u', 'l', 'd'}; (没有\ 0)

它仍然编译.

哪里pattern没有\0原因问题,因为它似乎是编译没有警告(-Wall)

c character-arrays

3
推荐指数
1
解决办法
2605
查看次数

使用计数器合并字典

我有以下词典(示例):

>>> x = {'a': 'foo', 'b': 'foobar'}
>>> y = {'c': 'barfoo', 'd': 'bar'}
Run Code Online (Sandbox Code Playgroud)

我想利用keys每一个,使他们的另一种价值dict,比方说z,这样的keysz是一个计数,等于两者的长度dicts.

>>> z = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的keysz是一个计数和valueskeysxy.

我该如何实现这一目标?我尝试过各种各样的解决方案zip,但似乎都没有.可能是因为我必须z连续更新字典.

有什么建议?

python merge dictionary

3
推荐指数
1
解决办法
146
查看次数

python twitter Api()找不到错误

我正在尝试使用python-twitter模块,但仍然在启动twitter.Api()时遇到问题.我已经检查并重新检查了我的系统上没有其他名为twitter.py或twitter.pyc的文件.在干净的安装我首先尝试

>>> import twitter 
Run Code Online (Sandbox Code Playgroud)

并正确得到'模块未知'的响应

我做了easy_install twitter,成功了.

然后做

>>> import twitter
>>> testapi = twitter.Api()
Run Code Online (Sandbox Code Playgroud)

回应是

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    testapi = twitter.Api()
AttributeError: 'module' object has no attribute 'Api'
>>> 
Run Code Online (Sandbox Code Playgroud)

我很累,试图在这里找到问题,请帮忙.

python api twitter

2
推荐指数
1
解决办法
2116
查看次数

从列表中删除重复元素和元素本身

我知道这个问题已被问过很多次,但我不是问如何从列表中删除重复的元素,我也想删除重复的元素.

例如,如果我有一个列表:

x = [1, 2, 5, 3, 4, 1, 5]
Run Code Online (Sandbox Code Playgroud)

我希望列表是:

x = [2, 3, 4] # removed 1 and 5 since they were repeated
Run Code Online (Sandbox Code Playgroud)

我不能使用set,因为那将包括15.

我应该用Counter吗?有没有更好的办法?

python list unique

2
推荐指数
1
解决办法
359
查看次数