我用目录结构创建了自己的Django应用程序
/appname
__init__.py
models.py
/submodule1
__init__.py
a.py
Run Code Online (Sandbox Code Playgroud)
在里面a.py我有以下导入
from ..models import Something
Run Code Online (Sandbox Code Playgroud)
如果我/appname在我的/djangoproject文件夹中,这可以正常工作,但是当我将应用程序安装到Python的站点包(setup.py我创建了它)时,所有地狱都会破坏并且a.py无法再导入Something,并出现以下错误:
ImportError: cannot import name Something
Run Code Online (Sandbox Code Playgroud)
这是setup.py:
from distutils.core import setup
setup(name='appname',
version='0.1',
packages=['appname', 'appname.contrib'],
)
Run Code Online (Sandbox Code Playgroud) 我去了这个页面并下载了tar文件: http://pypi.python.org/pypi/lxml/2.3.4#downloads
然后我将lxml文件夹复制到我的Python26/Lib文件夹中.现在,当我去解释器并键入from lxml import etree我得到错误:cannot import etree.有人知道出了什么问题吗?我正在运行Windows.
我创建了一个程序,在本地服务器中创建Web体系结构,然后加载必要的浏览器以在localhost上显示html和php页面.
该os.system调用会杀死python进程,但不会杀死其他进程 - 例如,httpd.exe和mysqld.exe
该subprocess调用会终止httpd.exe和mysqld.exe程序,但会继续运行python代码,并且在subprocess调用后不会执行任何代码.
在执行python代码之后,我将如何杀死或隐藏所有必要的进程?
这是我的代码.
os.makedirs(dr + x + '/admin' + '/css')
dobj = open(dr + x + '/admin' + '/css' + '/style.css', 'w')
dobj.close()
del dobj
os.makedirs(dr + x + '/admin' + '/js')
os.makedirs(dr + x + '/admin' + '/img')
################################################################################
## THE OS SYSTEM CALLS CLOSE THE APP BUT OPEN THE PROCESSES
## AND THE SUBPROCESS CALLS CLOSE BOTH PROCESSES AND LEAVES THE …Run Code Online (Sandbox Code Playgroud) 我有一个大约有100000个或更多节点的JTree.现在我想扩展整棵树.为此,我使用我在这里找到的解决方案.
我的问题是扩展这么大的树需要60秒或更长时间,这不是很方便.有没有人有任何建议我如何加快扩张?
我正在尝试使用urllib 从ftp 人口普查站点下载zip文件("tl_2008_01001_edges.zip").当我得到它时,zip文件的形式是什么?如何保存?
我是Python的新手,并不了解urllib的工作原理.
这是我的尝试:
import urllib, sys
zip_file = urllib.urlretrieve("ftp://ftp2.census.gov/geo/tiger/TIGER2008/01_ALABAMA/Autauga_County/", "tl_2008_01001_edges.zip")
Run Code Online (Sandbox Code Playgroud)
如果我知道ftp文件夹(或本例中的县)的列表,我可以使用glob函数运行ftp 站点列表吗?
谢谢.
我想捕获并显示我通过Python的子进程调用的进程的输出.
我以为我可以将我的文件类对象作为命名参数stdout和stderr传递
我可以看到它访问fileno属性 - 所以它正在对对象做一些事情.但是,write()永远不会调用该方法.我的方法是完全关闭还是我错过了什么?
class Process(object):
class StreamWrapper(object):
def __init__(self, stream):
self._stream = stream
self._buffer = []
def _print(self, msg):
print repr(self), msg
def __getattr__(self, name):
if not name in ['fileno']:
self._print("# Redirecting: %s" % name)
return getattr(self._stream, name)
def write(self, data):
print "###########"
self._buffer.append(data)
self._stream.write(data)
self._stream.flush()
def getBuffer(self):
return self._buffer[:]
def __init__(self, *args, **kwargs):
print ">> Running `%s`" % " ".join(args[0])
self._stdout = self.StreamWrapper(sys.stdout)
self._stderr = self.StreamWrapper(sys.stderr)
kwargs.setdefault('stdout', self._stdout)
kwargs.setdefault('stderr', self._stderr)
self._process = subprocess.Popen(*args, …Run Code Online (Sandbox Code Playgroud) 有没有办法欺骗argparse接受任意数字参数,如HEAD(1)?
head -5 test.txt
Run Code Online (Sandbox Code Playgroud)
相当于
head -n 5 test.txt
Run Code Online (Sandbox Code Playgroud)
我目前的方法是使用parse_known_args()然后处理其余部分,但我希望有一些更优雅的东西.
argparse在处理接收全局选项的子命令时失败:
import argparse
p = argparse.ArgumentParser()
p.add_argument('--arg', action='store_true')
s = p.add_subparsers()
s.add_parser('test')
Run Code Online (Sandbox Code Playgroud)
会有p.parse_args('--arg test'.split())工作,
但失败了p.parse_args('test --arg'.split()).
有谁知道python参数解析器正确处理子命令的全局选项?
我有一组必须动态修改 os.sys.path 的脚本。然后脚本启动一个子流程。理想情况下,子进程将与调用者具有相同的 os.sys.path。我想避免将它作为参数传递,因为这需要修改子流程脚本。
我有可以工作并满足我所有需求的代码。我想知道是否有更好的方法来做到这一点,以及这种方法是否存在任何缺陷。
主要流程
import os
import sys
import subprocess
#append a dir thats not on the sys path
sys.path.append('C:/pytest2/')
#convert the sys.path into env variable format
pypath = ''
for d in sys.path:
pypath = pypath + d + ';'
#create a temp copy of the env variables
myenv = os.environ.copy()
#set PYTHONPATH to match this scripts sys.path
myenv['PYTHONPATH'] = pypath
#setup a python command to echo the sys.path
command = 'python C:/pytest/test_subprocess.py'
#launch the subprocess with …Run Code Online (Sandbox Code Playgroud) 我目前正在编写一个脚本,将一堆XML文件从各种编码转换为统一的UTF-8.
我首先尝试使用LXML确定编码:
def get_source_encoding(self):
tree = etree.parse(self.inputfile)
encoding = tree.docinfo.encoding
self.inputfile.seek(0)
return (encoding or '').lower()
Run Code Online (Sandbox Code Playgroud)
如果那是空白的,我尝试从chardet以下方面获取:
def guess_source_encoding(self):
chunk = self.inputfile.read(1024 * 10)
self.inputfile.seek(0)
return chardet.detect(chunk).lower()
Run Code Online (Sandbox Code Playgroud)
然后我codecs用来转换文件的编码:
def convert_encoding(self, source_encoding, input_filename, output_filename):
chunk_size = 16 * 1024
with codecs.open(input_filename, "rb", source_encoding) as source:
with codecs.open(output_filename, "wb", "utf-8") as destination:
while True:
chunk = source.read(chunk_size)
if not chunk:
break;
destination.write(chunk)
Run Code Online (Sandbox Code Playgroud)
最后,我正在尝试重写XML标头.如果最初是XML标头
<?xml version="1.0"?>
Run Code Online (Sandbox Code Playgroud)
要么
<?xml version="1.0" encoding="windows-1255"?>
Run Code Online (Sandbox Code Playgroud)
我想把它变成
<?xml version="1.0" encoding="UTF-8"?>
Run Code Online (Sandbox Code Playgroud)
我目前的代码似乎不起作用:
def edit_header(self, input_filename):
output_filename = …Run Code Online (Sandbox Code Playgroud) python ×9
subprocess ×3
argparse ×2
lxml ×2
django ×1
elementtree ×1
expand ×1
html-parsing ×1
importerror ×1
iostream ×1
java ×1
jtree ×1
parsing ×1
performance ×1
pythonpath ×1
stderr ×1
stdout ×1
subcommand ×1
urllib ×1
urllib2 ×1
xml ×1