假设我有两个不同的模块,它们具有统一(相同)的接口.文件列表如下:
root/
logic.py
sns_api/
__init__.py
facebook/
pyfacebook.py
__init__.py
myspace/
pymyspace.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
并且pyfacebook.py和pymyspace.py具有相同的接口,这意味着:
# in pyfacebook.py
class Facebook:
def __init__(self, a, b):
# do the init
def method1(self, a, b, ...):
# do the logic
# in pymyspace.py
class Myspace:
def __init__(self, a, b):
# do the init
def method1(self, a, b, ...):
# do the logic
Run Code Online (Sandbox Code Playgroud)
现在我有一个问题.我想在logic.py中执行逻辑而不复制代码,所以我想知道如何设置一个标志来显示我使用的模块,python将自动加载正确的代码,这意味着:
# in logic.py
PLATFORM = "facebook"
# import the right modules in, complete the logic with the current platform
# create the right …Run Code Online (Sandbox Code Playgroud) def foo(**args):
for k, v in args.items():
print type(k), type(v)
for k, v in args.items():
k = v
print k
print type(k)
foo(a = 10)
foo(**{'a':10})
Run Code Online (Sandbox Code Playgroud)
给我
<type 'str'> <type 'int'>
10
<type 'int'>
<type 'str'> <type 'int'>
10
<type 'int'>
Run Code Online (Sandbox Code Playgroud)
所以我很困惑,我怎么能这样做,因为k是一个字符串,所以我不能分配给它?
我显然做不到
In [35]: 'a' = 10
------------------------------------------------------------
File "<ipython console>", line 1
SyntaxError: can't assign to literal (<ipython console>, line 1)
Run Code Online (Sandbox Code Playgroud) 我需要从结构中提取数据并将其放入列表中,但我不知道结构有多少级别.
对于每个级别,我可以调用level.children(),如果当前级别之下没有级别,则返回[],如果有,则返回[object, object, ...],在每个级别上我可以children()再次调用.
我需要深入了解结构,直到我将所有级别的数据提取到列表中.
当基于这样的结构:
<name>John Smith</name>
<team link="http://teamwebsite.com">
<name>Team Name</name>
</team>
<games>
<location>
<venue>A stadium</venue>
</location>
</games>
Run Code Online (Sandbox Code Playgroud)
该列表应如下所示:
[
[
{'name': 'name', 'attrs': {}, 'text': 'John Smith', 'parent': None},
],
[
{'name': 'team', 'attrs': {'link': 'http://teamwebsite.com'}, 'text': '', 'parent': None},
{'name': 'name', 'attrs': {}, 'text': 'Team Name', 'parent': 1}, # the reference to its parent's position in the list
],
[
{'name': 'games', 'attrs': {}, 'text': '', 'parent': None},
{'name': …Run Code Online (Sandbox Code Playgroud) [(',', 52),
('news', 15),
('.', 11),
('bbc', 8),
('and', 8),
('the', 8),
(':', 6),
('music', 5),
('-', 5),
('blog', 4),
('world', 4),
('asia', 4),
('international', 4),
('on', 4),
('itunes', 4),
('online', 4),
('digital', 3)]
Run Code Online (Sandbox Code Playgroud)
假设我有这个列表,里面有元组.
如何查看列表并删除其中没有字母字符的元素?
所以它变成了这个:
[('news', 15),
('bbc', 8),
('and', 8),
('the', 8),
('music', 5),
('blog', 4),
('world', 4),
('asia', 4),
('international', 4),
('on', 4),
('itunes', 4),
('online', 4),
('digital', 3)]
Run Code Online (Sandbox Code Playgroud) 我想将python脚本的输出传递给bash脚本.我所做的,到目前为止是我试图用os.popen(),sys.subprocess()以及试图给管道为例
os.popen('echo "P 1 1 591336 4927369 1 321 " | v.in.ascii -zn out=abcx format=standard --overwrite')
Run Code Online (Sandbox Code Playgroud)
但这不起作用,值"591336"和"4927369"是作为python脚本输出的变量.但是当我这样做或通过重复echo命令和管道手动更改值时,它可以工作(在bash中).
v.in.ascii -zn out=abcx format=standard --overwrite
Run Code Online (Sandbox Code Playgroud)
bash命令的上述部分是Grass GIS的一部分
谁能帮我!
这是一个功能(归功于用户Abbot,用于在另一个问题中提供)
def traverse(ftp):
level = {}
for entry in (path for path in ftp.nlst() if path not in ('.', '..')):
ftp.cwd(entry)
level[entry] = traverse(ftp)
ftp.cwd('..')
return level
Run Code Online (Sandbox Code Playgroud)
这是我不明白的:当python进入函数时,它会创建一个空字典(level).在for循环中,它将目录名称存储为字典中的键.至于那个键的值,python再次进入函数并搜索一个目录,它就变成了该键的值.
但是,级别字典如何记住内部的值?我的意思是,每次python进入函数时都不应该重置/清空吗?
我正在尝试在Python中创建一个三维N N N列表,如下所示:
n=3
l = [[[0,]*n]*n]*n
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎没有正确"克隆"列表,因为我认为它会:
>>> l
[[[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]
>>> l[0][0][0]=1
>>> l
[[[1, 0, 0], [1, 0, 0], [1, 0, 0]], [[1, 0, 0], [1, 0, 0], [1, 0, 0]], [[1, 0, 0], [1, 0, 0], [1, 0, 0]]]
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
如何为python开发设置Linux/Unix机器?我应该使用哪个Linux/Unix版本?应该使用什么IDE?我应该有哪些开发插件?什么样的代码风格应该是最好的?以上所述,一个开源(python开发人员)开发的伟大开发机器?
我可以要求为Python提供一些出色的个性化IDE屏幕截图吗?邀请所有平台用户.请确保包含源/插件/文章如何制作它.
谢谢.
我正在尝试将String插入列表中.
我收到了这个错误:
TypeError: can only concatenate list (not "tuple") to list
Run Code Online (Sandbox Code Playgroud)
因为我试过这个:
var1 = 'ThisIsAString' # My string I want to insert in the following list
file_content = open('myfile.txt').readlines()
new_line_insert = file_content[:10] + list(var1) + rss_xml[11:]
open('myfile.txt', 'w').writelines(new_line_insert)
Run Code Online (Sandbox Code Playgroud)
myfile.txt的内容作为列表保存在"file_content"中.我想在第10行之后插入String var1,这就是我做的原因
file_content[:10] + list(var1) + rss_xml[11:]
Run Code Online (Sandbox Code Playgroud)
但列表(var1)不起作用.如何使此代码有效?谢谢!