Mar 21
# python内置函数(1)
abs(x)
    返回绝对值
all(iterable)
    全真或者空返回真
any(iterable)
    只要有一个为真即返回真
ascii(object)
    如果是ascii字符则返回可打印,否则返回\x, \u或者\U开头的字符串
bin(x)
    返回二进制字符串以0b开头
bool([x])
    转化为布尔值
classmethod(function) 
    返回函数的类方法
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) 
    # 有点复杂
    ...
complex([real[,imag]])
    返回复数
delattr(object, name)
    删除属性
dict([arg])
    创建字典
dir([object])
    返回函数内置方法
divmod(a, b)
    # 有点复杂
    如果是整数, 返回(a // b, a % b)
    如果是小数, 返回(math.floor(a / b), a % b)
enumerate(iterable, start=0)
    返回枚举对象
    example: 
    >>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
    >>> list(enumerate(seasons))
    [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
    >>> list(enumerate(seasons, start=1))
    [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
eval(expression, globals=None, locals=None)
    expression必须是str. globals必须是字典, locals可以是任何映射对象
    计算表达式的值
exec(object[,globals[,locals]])    
    动态执行python代码
filter(function, iterable)
   过滤函数 
   对于iterable中的每一个元素, 若function返回真, 则保留元素
float([x])
    返回小数
format(value[,format_spec])
    格式化字符串
    >>> '{0:.1f} {1}'.format(698.24, 'GB')
    '698.2 GB'
frozenset([iterable]) 
    不可变的集合
getattr(object, name[, default]) 
    返回对象的name属性
globals()
    返回所有全局变量
hasattr(object, name)
    如果对象有name属性,则返回真,否则返回假
hash(object)
    返回对象的hash值
help([object])
    帮助
hex(x)
    返回16进制
id(object)
    返回唯一标识(对象的生命周期内)
input([prompt])
    获取用户输入
int([number|string[,base]])
    返回整数 base 进制?

 

 

Mar 21

有个游戏,杀星很麻烦. 星的信息是从谣言频道发出的,但是谣言频道信息太多,需要提取. 星是有时效的,所以只显示最近的几十项就好.

本来不想做界面的,可是cmd实在是太丑了,而且占桌面空间,本来屏幕就小.

使用工具: python3+pyqt4

实际运行图是这样的. 

界面截图

游戏窗口是1024*768居中屏幕, 必须偏移一下辅助程序窗口,所以辅助程序窗口没有了右边框.

 

Mar 20

用java写个小程序,将一个zip包里所有照片数量统计出来导出到一个txt文件中,(zip里面全是照片)有大神能搞定吗

源自上面这个需求.

当然,我只能单纯从文件拓展名去分析了(只管jpg)...形式审查.

写了一段很难维护的代码,实际代码只有两行.

#!/usr/bin/env python3
import re, zipfile, glob
with open("a.txt", 'w') as f: [f.write("%s %s\n" % (i, (lambda y: len(list(filter(lambda x: re.findall('\.jpg', x, re.I), zipfile.ZipFile(y).namelist()))))(i))) for i in glob.glob('*.zip')]

当然,如果要做实质审查或者不只是jpg,那么 filter的检验函数要变成更加严谨的,比如查看图片标识.

另一方面,两行代码,这么这样了吧.

 

Mar 12

原贴地址: http://www.linuxquestions.org/questions/programming-9/how-can-i-list-directories-only-in-linux-375219/

ls -p | grep "/"

-p 选项只会给目录后面加/

tree -d -L 1

-d 只显示目录 -L 1最大深度是1

find . -type d -exec ls -d {} \;

查找当前目录文件夹,并对每一个目录执行ls -d. 即递归列出所有目录。效果上等价于tree -d,不过输出结果是不同的。

ls -d */

I just found this out after nearly 3 years of using Linux.

不解释。。。

If you want to include the hidden directories, you may want to try one of these....

如果连隐藏目录也要一起,那么试下面之一吧。

find . -type d -exec ls -d {} \;
or
ls -d .*"/" *"/" 
or 
find . -type d

试试du看。当然,如果不喜欢左边的size,你可以du|awk '{print $2}'

呃。单行脚本都出来了。

for f in *;do if [[ -d $f  ]]; then echo $f;fi; done

当然,我认为最好还是ls -d */ 如果不要求显示隐藏目录

Mar 2

源自 Learning Python第三版

内置对象让写程序变得容易

对于简单任务,内置对象通常是你解决问题所需要的全部.因为你可以自由(便利)地使用这些强大的工具,比如集合(列表)和检索表(字典),你可以直接使用它们.你只需要使用Python的内置对象就可以完成大量的任务.

内置对象是拓展的组件

对于更复杂的任务,你可能还是需要使用Python的类或者C语言接口来构建自己的对象.但是,正如你接下来在本书看到的一样,自定义对象通常建立在内置对象之上,比如列表和字典.比方说,一个堆栈结构可能是通过调用或者自定义内建的列表来实现的.

内置对象通常比自定义数据结构更高效

Python的内置对象为了执行效率,已经采用C语言实现优化的数据结构算法.尽管你可以自己写出更小的的对象类型,但是你常常会纠结于获得跟内置对象一样的性能.

内置对象是Python语言标准的一部分

在某些方面,Python既借用了那些依赖于内置工具的语言(的特性), 比如说LISP,又借用了那些依赖于语言本身的编程提供工具或者框架(的特性),比如说C++.尽管你可以在Python里实现一些独特的类型,但你并不需要这么做,所以,只要用(内置对象)就好了. 更进一步说,因为Python内置对象是标准的,它们(提供的接口)通常都一样;另一方面,专有框架趋向于各自不同.

换句话说,内置对象不只是使写程序更容易,而且它们比多数手工创建的类型要强大高效得多.不管你实现了什么新对象,内置对象构成了每一个Python程序的核心.

 

译后感言: 读英文容易,但是要译成中文,却费了很多功夫.

Feb 27

问题的由来: 刻录了一百多张光盘, 记录了每一张光盘的目录数(光盘根目录下的一层子目录), 发现光盘目录数总和大于源数据目录数. 应该是 一个目录只能刻录在一张光盘上, 所有光盘下目录总数等于源数据目录总数, 不多不少

于是得校验到底是哪些光盘里的目录是重复了. 光盘有相应的标签...

如果是一台机依次读取一百来个光盘,那还真够呛的. 所以,得分开来读,得到一些原始数据再合并对比. 标识光盘,当然是其标签, 已经确定了,标签不存在重复. 所以,我想到用字典来处理.

#!/usr/bin/env python3
#coding=gbk
import os
import ctypes
import win32api

def get_write():
    cdrom = "E:"
    k = win32api.GetVolumeInformation(cdrom)[0]
    dirs = os.listdir(cdrom)
    ctypes.windll.WINMM.mciSendStringW(u"set cdaudio door open", None, 0, None)
    print("光驱已经弹出, 请换光盘继续")
    return (k, dirs)

mydict = {}
ans = input("装光盘放入光驱后, 按回车键继续\n>")
while ans != 'q':
    k, v = get_write()
    mydict[k] = v
    ans = input("装光盘放入光驱后, 按回车键继续,输入q退出\n>")

for k, v in mydict.items():
    print(k, v)

字典的键是光盘标签, 键值是目录列表

cdrom 暂时定为E盘, 还找到获取第一个光驱的盘符的办法

Feb 27

原文标题: Change, Edit, Modify your Network Adapter Config via Command Prompt

原文地址:  http://mikedopp.com/2010/change-edit-modify-your-network-adapter-config-via-command-prompt/

在你的电脑上,命令提示符可以强大快速地完成很多事情. 然而多数人发现它很难用是因为他们不知道哪些命令输出的结果是他们想要的.

我们会将涉及到使用命令行配置你的网络适配器.

查看你的 TCP/IP 配置:

“netsh interface ip show config”

修改 TCP/IP 配置:

“netsh interface ip set address name=”本地连接” static 192.168.0.100 255.255.255.0 192.168.0.1.1”

输出你当前(网络)配置到一个txt文件:

“netsh –c interface dump > C:’locatio1.txt”

(从文件)导入IP配置:

“netsh –f c:’location1.txt”

设定IP模式为DHCP(自动获取):

“netsh interface ip set address “本地连接” dhcp”

设定你的DNS和WINS地址:

“netsh interface ip set dns “本地连接” static 192.168.0.100”

设定DNS为动态获取:

“netsh interface ip set dns “Local Area Connection” dhcp”

此,你可以说命令 “netsh”是非常强大的

Oct 26

所使用的程序版本

httpd-2.2.25-win32-x86-no_ssl

PHP Version 5.2.17

mysql-5.5.25-win32

 

http一路next

php放在d:\php5

mysql开发者模式, 编码选utf8, 防火墙例外,密码,允许远程root登陆,把mysql加入path

apache要设定的几项 (httpd.conf)

网站根目录,这两项要改就一起改

DocumentRoot "d:/www"
<Directory "d:/www">
 

外网访问

<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all # 默认Deny 需要修改成Allow, 否则外网不能访问
</Directory>

解析.php

DirectoryIndex index.html index.php

AddType application/x-httpd-php .php
AddType application/x-httpd-php .html

指定php配置文件目录,否则默认为C:/php

PHPIniDir "D:/php5"

php要设定的几项 php.ini

拓展路径

extension_dir = "d:/php5/ext/"

启用模块

extension=php_mbstring.dll ;字符串....
extension=php_exif.dll ; Must be after mbstring as it depends on it
extension=php_mysql.dll
extension=php_mysqli.dll

extension=php_pdo_mysql.dll

extension=php_pdo.dll

Mar 28

这是一篇抄来的文章。http://forum.ubuntu.com.cn/viewtopic.php?f=120&t=62484

1. Don't answer questions to which you don't know the answer(不回答自己不知道答案的问题) 

2. Explain yourself (解释给自己) 
如果自己是提问者,你的回答是否能让自己明白? 


3. Give as little assistance as necessary (尽可能的给最少的帮助) 
有的时候启发性的回答更为有效. 

4. Show your workings (展示你的做法) 

5. Use humour judiciously (明智地使用幽默) 
有的时候因为不同语境/语言的问题,你的俏皮话可能会让提问者更加困惑。 

6. If you can't say something nice don't say anything atall(如果你不能说出有用的内容,就别说) 

7. Avoid jargon, baffling acronyms and idiolects(避免行话、令人困惑的缩写词、习惯用语) 

8. Never never never just respond with RTFM. Not ever.(永远永远永远不要回复RTFM) 
这里的 RTFM 代表"Read The Fucking Manual", "去读该死的手册". 
另外一个常见的是: STFW --Search The Fucking Web, 
"搜索该死的网络",或者友好一点的 "Google 一下". 
对于中文论坛上,我觉得还有一个尽量不要说 "RPWT" --人品问题 

9. Meditate on eternity (永远的深思熟虑) 
回答的问题,可能在不久以后会被别人搜索到,看到,甚至是被你将来的老板看到。一 
个欠缺思索的回答无疑会降低你在其他技术人员心目中的形象。 

10. Keep your newbie mind (保持自己的"新手"思维) 
学无止境 

保持谦卑。回答并不意味着你是"给予", 可能你也在学习. 
不要认为回答了一些问题自己就成了 Guru 了. 

-- 
把问题先交给google,然后再交给你的朋友。。。

Jun 5

在列表中,搜索元素比较头痛,一般只会得到第一个元素的索引,这里,我改变了搜索过的元素。当然,实际操作中,是需要把列表复制的 如 d=c[:] 再对d进行处理。

此代码来自一个问题:

yjcong

这个, 我不晓得是哪个术语对应, 所以加了个引号.

问题有2个,

1) 在一个文件中, 如何在定位的"abcxyz"后, 如何显示其下一行的内容. 若是有很多个, 如何?

2) 假设搜索的关键字在第n行, 如何同时显示第n-1, n, n+1行的内容

thx

问题二在帖子中已经解决,不再处理。http://forum.ubuntu.com.cn/viewtopic.php?f=21&t=443359&p=3007102#p3007102

关键词改为熟悉的foo

 

 

测试用例

foo
akjkdjkejwl
rkewjlkrjwelk
foo
fewkjk1kl1l2l1212l1
fewkjrkewjn mnfmenw
ewkjrkjwl
barfoofwerjwekjr
barofwerjwekjr
 

输出结果

 

akjkdjkejwl

fewkjk1kl1l2l1212l1

barofwerjwekjr

 





#!/usr/bin/env python3
import re

def fun(c):
     for i in c:
         if re.findall('foo',i):
                 try:
                         print(c[c.index(i)+1])
                         c[c.index(i)] += 'someword' 
                 except:
                         print("keyword is in the last line")

 #f=open('d:/1')
 #c=[]
#[c.append(i) for i in f.readlines()]
 #fun(c)
fun(open('d:/1').readlines())