小编Pab*_*loG的帖子

在使用Python下载之前获取文件大小

我正在从Web服务器下载整个目录.它工作正常,但我无法想象如何在下载之前获取文件大小以进行比较,如果它在服务器上更新了.这可以像我从FTP服务器下载文件一样吗?

import urllib
import re

url = "http://www.someurl.com"

# Download the page locally
f = urllib.urlopen(url)
html = f.read()
f.close()

f = open ("temp.htm", "w")
f.write (html)
f.close()

# List only the .TXT / .ZIP files
fnames = re.findall('^.*<a href="(\w+(?:\.txt|.zip)?)".*$', html, re.MULTILINE)

for fname in fnames:
    print fname, "..."

    f = urllib.urlopen(url + "/" + fname)

    #### Here I want to check the filesize to download or not #### 
    file = f.read()
    f.close()

    f = open (fname, "w")
    f.write (file) …
Run Code Online (Sandbox Code Playgroud)

python urllib

43
推荐指数
6
解决办法
4万
查看次数

将文件复制到服务器后的文件大小差异víaFTP

我创建了一个PHP脚本来更新本地目录中的实时Web服务器.我正在将脚本迁移到Python中.它在大多数情况下工作正常,但在PUT命令之后,文件的大小似乎会改变.因此,文件的大小与服务器上的文件大小不同.

一旦我从FTP服务器再次下载文件,唯一的区别是CR/LF标记.这让我很烦,因为相同的脚本正在比较要更新的文件的大小.此外,如果它意味着什么,该脚本在PHPvíaftp_put中完美运行.

from ftplib import FTP

ftpserver = "myserver"
ftpuser = "myuser"
ftppass = "mypwd"

locfile =  "g:/test/style.css"
ftpfile =  "/temp/style.css"

try:
    ftp = FTP(ftpserver, ftpuser, ftppass)
except:
    exit ("Cannot connect")

f = open (locfile, "r")
try:
    ftp.delete (ftpfile)
except:
    pass

# ftp.sendcmd ("TYPE I")
# ftp.storlines("STOR %s" % ftpfile, f)
ftp.storbinary("STOR %s" % ftpfile, f)
f.close()

ftp.dir (ftpfile)
ftp.quit()
Run Code Online (Sandbox Code Playgroud)

有什么建议?

php python ftp webserver ftplib

41
推荐指数
1
解决办法
3765
查看次数

使用Python创建加密的ZIP文件

我在Python 2.5中使用ZipFile创建一个ZIP文件,它到目前为止工作正常:

import zipfile, os

locfile = "test.txt"
loczip = os.path.splitext (locfile)[0] + ".zip"
zip = zipfile.ZipFile (loczip, "w")
zip.write (locfile)
zip.close()
Run Code Online (Sandbox Code Playgroud)

但我找不到如何加密ZIP文件中的文件.我可以使用系统并调用PKZIP -s,但我想必须有更"Pythonic"的方式.我正在寻找一个开源解决方案.

python zip

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

如何在GreaseMonkey脚本中实现"DOM Ready"事件?

我正在尝试修改我的GreaseMonkey脚本,从window.onload触发到window.DOMContentLoaded,但此事件永远不会触发.

我正在使用FireFox 2.0.0.16/GreaseMonkey 0.8.20080609

是我正在尝试修改的完整脚本,正在更改:

window.addEventListener ("load", doStuff, false);
Run Code Online (Sandbox Code Playgroud)

window.addEventListener ("DOMContentLoaded", doStuff, false);
Run Code Online (Sandbox Code Playgroud)

javascript firefox greasemonkey

20
推荐指数
2
解决办法
2万
查看次数

在Python中扩展基类

我正在尝试在Python中扩展一些"基础"类:

class xlist (list):
    def len(self):
        return len(self)

    def add(self, *args):
        self.extend(args)
        return None


class xint (int):
    def add(self, value):
        self += value
        return self


x = xlist([1,2,3])
print x.len()   ## >>> 3 ok
print x         ## >>> [1,2,3] ok
x.add (4, 5, 6)
print x         ## >>> [1,2,3,4,5,6] ok

x = xint(10)
print x         ## >>> 10 ok
x.add (2)
print x         ## >>> 10  # Not ok (#1)

print type(x)         ## >>> <class '__main__.xint'> ok
x += 5 …
Run Code Online (Sandbox Code Playgroud)

python

11
推荐指数
2
解决办法
2万
查看次数

关于Enthought Traits/TraitsUI for Python桌面开发的观点

我正在寻找有关使用Traits/TraitsUI/enaml进行Python桌面开发的意见和经验.

文档和Enthought支持看起来很有前景,所以我想知道开发人员使用这个堆栈的真实第一手经验.

更新:

我主要关注的是迁移旧的几个桌面数据库应用程序:CRUD /查询/报告.然后,我特别感兴趣的是数据访问层:现在,我正在使用PosgtreSQL和 peewee(简约ORM):

  • 是否有SQL数据库的内置或侧面项目支持?
  • 如果是这样,是否有任何ORM支持?(我想这里的SqlAlchemy是'标准')

python user-interface traits enthought enaml

9
推荐指数
2
解决办法
3667
查看次数

Windows shell中的"Bootstrap"python脚本没有.py/.pyw关联

有时(在客户的PC中)我需要一个python脚本在Windows shell中执行,如.CMD或.BAT,但没有与PYTHON/PYTHONW关联的.py或.pyw扩展名.

我推出了一对'quick'n dirty'解决方案:

1)

"""
e:\devtool\python\python.exe %0 :: or %PYTHONPATH%\python.exe
goto eof:
""" 
# Python test
print "[works, but shows shell errors]"
Run Code Online (Sandbox Code Playgroud)

2)

@echo off
for /f "skip=4 delims=xxx" %%l in (%0) do @echo %%l | e:\devtools\python\python.exe
goto :eof
::----------

# Python test
print "[works better, but is somewhat messy]"
Run Code Online (Sandbox Code Playgroud)

你知道更好的解决方案吗?(即:更简洁或优雅)


更新:

基于@van回答,我找到了更简洁的方法(没有设置ERRORLEVEL)

@e:\devtools\python\python.exe -x "%~f0" %* & exit /b

### Python begins....
import sys

for arg in sys.argv:
    print arg

raw_input("It works!!!\n")

###
Run Code Online (Sandbox Code Playgroud)

python shell

8
推荐指数
1
解决办法
1183
查看次数

如何获得表单主动控件?

有没有办法让表单主动控制?

我正在检查"Support.GetActiveControl"方法的帮助,但不支持:)用于Compact Framework.

我想我可以通过向GotFocus所有表单控件添加自定义事件处理程序来跟踪焦点,但我正在寻找一种可以为任何表单实现的更通用的方法.

c# windows-mobile windows-ce winforms

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

在一系列值上执行操作的C#模式是什么?

我有这个代码:

if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Orange) == KeyState.Lock)
    PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Orange, 0, 0);

if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Blue) == KeyState.Lock)
    PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Blue, 0, 0);

if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Shift) == KeyState.Lock)
    PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Shift, 0, 0);

if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Control) == KeyState.Lock)
    PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Control, 0, 0);

...
Run Code Online (Sandbox Code Playgroud)

我想重构将键/函数定义与动作分开的代码.Key.xxx和Function.xxx不是同一类型.

例如:在Python中,我可以简单地执行以下操作:

keys = (
    ( Key.Orange, Function.Orange ),
    ( Key.Blue  , Function.Blue ),
    ( Key.Shift , Function.Shift ),
    ...
    )

psi_key = PsionTeklogix.Keyboard.Keyboard

for key, func in keys:
    if psi_key.GetModifierKeyState(key) == KeyState.Lock):
        psi_key.InjectKeyboardCommand(func, 0, 0)
Run Code Online (Sandbox Code Playgroud)

在C#中做什么是"正确的方法"?

c#

5
推荐指数
1
解决办法
421
查看次数

Scintilla中的替代行着色

我正在使用wxPython中的wxStyledTextCtrl,它是Scintilla组件的包装器.

有没有办法在它上面获得备用行颜色(一种背景颜色中的奇数行和另一种颜色中的偶数行)?我正在使用内置的python样式器来突出显示关键字.

python wxpython scintilla

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