论坛首页 编程语言技术论坛

督促自己-清风Python练习贴

浏览 64852 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-03-10  
最近用python做的两个东西还没有结果(一个用Python操作SSH服务器,一个利用网格计算的概念进行暴力破解)所以没有乱发贴,等完成之后再发贴,有这方面经验的朋友,不要吝啬,把你们的经验一起来分享吧:)
0 请登录后投票
   发表时间:2005-03-10  
ajooTrustno1 写道
俺照着清风帅哥的指引,写了这么一个恶心的东东.
估计没人能看懂,过段时间,俺也看不懂了.
也不知道有什么用.:cry: 

import urllib
import os
import os.path
import string

userfile = open("user.txt", "r");
#user.txt 的格式如下
#  username robin
#  password robin
userlines = userfile.readlines();

userTxtline0 = string.split(userlines[0]);
userTxtline1 = string.split(userlines[1]);

username = userTxtline0[1]
password = userTxtline1[1]
print 'username: ' + username + '\n'
print 'password: ' + password + '\n'
loginparams = urllib.urlencode({'sid':"75d0d1867f07862c2c7d18849dbb9b21", 'username':username, 'password':password, 'autologin':"false", 'redirect':"", 'login':"登录"});
f = urllib.urlopen("http://forum.iteye.com/login.php", loginparams);
f2 = open('result1.html', 'w');
f2.write(f.read(););
message = 'hahaha'
postparams = urllib.urlencode({'mode':'reply', 't':10115, 'message':message, 'post':"提交"});

testparams = urllib.urlencode({'sid':"75d0d1867f07862c2c7d18849dbb9b21", 'username':username, 'password':password, 'autologin':"false", 'redirect':"", 'login':"登录", 'mode':'reply', 't':10115, 'message':message});
f = urllib.urlopen("http://forum.iteye.com/posting.php", postparams);
f2 = open("result2.html", "w");
f2.write(f.read(););


自动登陆,自动发贴:)?继续呀
0 请登录后投票
   发表时间:2005-03-15  
我的系统中不能够在python中保存中文,我用的系统是windows2000的多国语言版本,怎么回事儿?


还有有没有使用代理的现成库?
0 请登录后投票
   发表时间:2005-03-17  
gKarerM 写道
我的系统中不能够在python中保存中文,我用的系统是windows2000的多国语言版本,怎么回事儿?


还有有没有使用代理的现成库?


关于Python的中文问题,安这个库试试
http://cjkpython.i18n.org/
0 请登录后投票
   发表时间:2005-04-21  
2005-03-31
之前一直策划给Faridea做一个RSS门户,用来把每个会员的Blog联合起来,使之有一个统一的入口,甚至可以把BBS的信息提取出来,这个东西应当是什么样子,当时也没有太大轮廓,于是就又来了一次发散思维。

此主题相关图片


事后查找到资料发现这种形式有现成的东西可以用,这种形式叫做Planet:http://www.planetplanet.org/,不过当时已经决定自己开发,而且发觉效果并不比Planet提供的差:)

这次使用到的关键技术只有一个,就是Python的RSS库feedparser和PyRSS2Gen,减少了很多工作量。

要解析一个RSS只需:
d = feedparser.parse(url);


生成一个RSS只需:
rss = PyRSS2Gen.RSS2(
        title = "Faridea RSS",
        link = "http://www.faridea.com",
        description = "web design designer FLash CG",
        lastBuildDate = datetime.datetime.now();,
        items = rss_items,
        generator="Powerd By Python",
        docs="http://www.faridea.com/bbs");

当然,以上只是示例代码。

目前,代码已经编写完成,可以顺利解析RSS并生成自己的RSS,目前的界面天涯已经设计出一版,效果如下:

此主题相关图片


目前正按XHTML标准制作中,由于很多突发情况,搁置了一段时间,近期我抓抓紧,尽快完成。
0 请登录后投票
   发表时间:2005-04-21  
2005-04-18

看着大家都在勤奋的练习着自己喜欢的东西,再看看我的练习,汗颜[em12]。

言归正传,这两天看着天涯他们参加T-Shirt大赛,很有意思,自己虽然不会做图,但也打算曲线做点贡献,做一个T-Shirt合成系统。

第一步先把两张图片合成为一张,既然写在这个帖子了,很明显我们是要使用Python来做,先下载PIL(http://www.pythonware.com/products/pil/)

随便挑选两张素材图片:

此主题相关图片


此主题相关图片


OK,接下来的任务就是把小图贴到大图上。看了一下PIL的文档,步骤如下:

引用

1.读取两张图片
2.将两张图片专为RGBA或L等模式,详见文档
3.建立一个和大图大小一样的白板图
4.将小图paste到这个白板图上
5.合成白板与大图


Python基本就是按照这个步骤下来的,整个代码非常简洁:
logo = Image.open("logo.gif");#读取两张图片
dog = Image.open("dog.jpg");#读取两张图片
layer = Image.new('RGBA',logo.size,(0,0,0,0););#建立一个和大图大小一样的白板图
layer.paste(dog);#将小图paste到这个白板图上
img1 = Image.composite(layer,logo,layer);#合成白板与大图
img1.show();#看合成后的图


合成效果如下:
此主题相关图片



OK,有了这个基础,我们就可以做更多的事情了:)

以下是用合成系统合成的T-Shirt,大家看看效果:)



0 请登录后投票
   发表时间:2005-04-21  
2005-04-21

老麦的Amowa终于有了一个实现:Buffalo[http://www.amowa.net/buffalo],而且客户端封装的确实不错,整体走了一遍他的JS和JAVA代码,越觉得有意思,尤其核心的Buffalo[http://www.caucho.com/resin-3.0/protocols/burlap.xtp]协议,感觉确实比Xmlrpc来的简洁,上网找了找,还没有Python的实现,OK,那就自己写一个PyBurlap吧,我相信肯定比JAVA来的简洁方便,在配上老麦封装的JS端,肯定会让使用上更加方便:)

OK,开始第一步,搭建环境
打开尘封以久的Eclipse,建立Burlap的服务器端环境,首先写一个简单的接口IHello
public interface IHello
{
    public abstract String hello();;
}


然后是他的实现
public class HelloService extends BurlapServlet implements IHello
{
    public String hello();
    {
        System.out.println("Hello");;
        return "Hello World!";
    }
}

把HelloService当作一个普通的Servlet配置一下,然后把Tomcat跑起来

客户端调用
public class Client
{
    public static void main(String[] args);
    {
        String url = "http://localhost:8080/buffalo/Hello";

        BurlapProxyFactory factory = new BurlapProxyFactory();;
        IHello basic = null;
        try
        {
            basic = (IHello); factory.create(IHello.class, url);;
        }
        catch (MalformedURLException e);
        {
            // TODO Auto-generated catch block
            e.printStackTrace();;
        }
        System.out.println("now();: " + basic.hello(););;
    }
}

以上的代码基本也就是按照Burlap的文档删删改改。
调用后效果如下:
此主题相关图片


OK,现在我们尝试在Python中调用这个HelloService,也不用开什么特定的编辑器,只要打开Python的脚本环境即可,然后输入如下命令。
此主题相关图片


我们看到在http.getfile.read()之后得到了正确的反馈:
'<burlap:reply><string>Hello World!</string></burlap:reply>'

OK,Burlap整个环境流程搭建测试完毕,接下来就是封装我们的PyBurlap了:)

P.S:有关Burlap协议的Specification
http://www.caucho.com/resin-3.0/protocols/burlap-1.0-spec.xtp
0 请登录后投票
   发表时间:2005-04-27  
wiki确实是很好的组织文档的形式,对于一个简单的开源项目的建立完全没有必要大张旗鼓的建立独立网站,架设CVS,一个wiki页面足以写下所有的内容了,PyBurlap就在啄木鸟直接建立项目页面,http://wiki.woodpecker.org.cn/moin/PyBurlap。下载、版本信息、使用例子全部包括。

再来说一下Burlap,Burlap是一种类似Xmlrpc的远程调用技术,目前支持的传送类型包括:
引用

base64 A base64-encoded binary stream
boolean A boolean value expressed as an integer, 0 or 1
date An ISO8609-encoded date
double A 64-bit IEEE floating pointer number
int A 32-bit signed integer
list An ordered list, like an array
long A 64-bit signed integer
map Represents serialized objects and Hashtables
null Null represents a null pointer
ref An integer referring to a previous <list> or <map> instance
remote A reference to a remote object
string A 16-bit unicode character string encoded in UTF-8
xml An XML document encoded as a 16-bit unicode character string encoded in UTF-8, following the rules for <string>


PyBurlap除了xml类型,已经全部支持
调用方法如下:

proxy = Burlap("http://localhost:8080/buffalo/Hello");
proxy.hello("Breeze");


返回
Hello Breeze

就这么简单。

关于Burlap协议的全部规范:http://www.caucho.com/resin-3.0/protocols/burlap-1.0-spec.xtp
关于PyBurlap项目:http://wiki.woodpecker.org.cn/moin/PyBurlap
下载:http://wiki.woodpecker.org.cn/moin/PyBurlap?action=AttachFile&do=get&target=PyBurlap0.1.zip
0 请登录后投票
   发表时间:2005-05-12  
引用
2。读文件
java代码: 


f = open("c:\\1.txt","r")
lines = f.readlines()#读取全部内容
for line in lines
  print line


突然发现一个问题呀,呵呵,for循环是不是少了个冒号呀?

for line in lines :
  print line
0 请登录后投票
   发表时间:2005-05-12  
谢谢指正,已修改原贴:)
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics