自动更换 gnome 桌面壁纸的python脚本
#!/usr/bin/env python
# vim: set fileencoding=utf-8:
import os.path, fnmatch
import os, random, time
def listFiles(root, patterns='*', recurse=1, return_folders=0):
# Expand patterns from semicolon-separated string to list
pattern_list = patterns.split(';')
# Collect input and output arguments into one bunch
class Bunch:
def __init__(self, **kwds): self.__dict__.update(kwds)
arg = Bunch(recurse=recurse, pattern_list=pattern_list,
return_folders=return_folders, results=[])
def visit(arg, dirname, files):
# Append to arg.results all relevant files (and perhaps folders)
for name in files:
fullname = os.path.normpath(os.path.join(dirname, name)) #目录规范化
if arg.return_folders or os.path.isfile(fullname): #判断是否返回目录。 是否是文件
for pattern in arg.pattern_list: #模式匹配用 "or" ,符合一个就ok
if fnmatch.fnmatch(name, pattern):
arg.results.append(fullname) #结果中添加文件名称
break
# Block recursion if recursion was disallowed
if not arg.recurse: files[:]=[] #把list中目录包含的文件/子目录置空,子目录没了哈
os.path.walk(root, visit, arg)
return arg.results
thefiles = listFiles('/home/gentoo/picture/wallpaper/', '*.jpg;*.gif;*.png', 1, 0)
while True:
try:
num = random.randint(0, len(thefiles))
cmd = 'gconftool-2 --type string --set /desktop/gnome/background/picture_filename ' + thefiles[num-1]
os.system(cmd)
time.sleep(60*5);
except:
raise SystemExit
# vim: set fileencoding=utf-8:
import os.path, fnmatch
import os, random, time
def listFiles(root, patterns='*', recurse=1, return_folders=0):
# Expand patterns from semicolon-separated string to list
pattern_list = patterns.split(';')
# Collect input and output arguments into one bunch
class Bunch:
def __init__(self, **kwds): self.__dict__.update(kwds)
arg = Bunch(recurse=recurse, pattern_list=pattern_list,
return_folders=return_folders, results=[])
def visit(arg, dirname, files):
# Append to arg.results all relevant files (and perhaps folders)
for name in files:
fullname = os.path.normpath(os.path.join(dirname, name)) #目录规范化
if arg.return_folders or os.path.isfile(fullname): #判断是否返回目录。 是否是文件
for pattern in arg.pattern_list: #模式匹配用 "or" ,符合一个就ok
if fnmatch.fnmatch(name, pattern):
arg.results.append(fullname) #结果中添加文件名称
break
# Block recursion if recursion was disallowed
if not arg.recurse: files[:]=[] #把list中目录包含的文件/子目录置空,子目录没了哈
os.path.walk(root, visit, arg)
return arg.results
thefiles = listFiles('/home/gentoo/picture/wallpaper/', '*.jpg;*.gif;*.png', 1, 0)
while True:
try:
num = random.randint(0, len(thefiles))
cmd = 'gconftool-2 --type string --set /desktop/gnome/background/picture_filename ' + thefiles[num-1]
os.system(cmd)
time.sleep(60*5);
except:
raise SystemExit
代码被格式化的看起来有点乱,整个脚本是标准的网络制造,
把搜索来的遍历目录和如何用命令更改桌面两个功能组装一下就成了。
实现的功能就是第隔5分钟更换一次桌面。
遍历的部分可以设置要搜索的后缀名、是否遍历和是否返回目录,很是强大。