PythonCodeExample是我偶然间发现的网站,里面提供了许多Python常用模块的优雅写法,这个网站打开可以直接检索自己想要学习的代码示例,并且示例种类非常多,主网站还提供了许多其他语言的例子。
这里分享下python常用模块的用法。向大佬学习真的是非常快的学习方法。
1.os.makedirs()
创建多级目录,创建一级使用os.mkdir
主要的两种写法,用try-except和if语句判断是否已经存在文件夹
try: os.makedirs(path)except Exception as e: raise e realpath = os.path.abspath(path) path_exists = os.path.exists(realpath) if path_exists and force: if not os.path.isdir(realpath): log("Removing non-directory file {} prior to mkdir()".format(path)) os.unlink(realpath) os.makedirs(realpath, perms)elif not path_exists: os.makedirs(realpath, perms)
2.os.walk(top, topdown=True, onerror=None, followlinks=False)
os.walk 的返回值是一个生成器(generator),每次遍历的对象都是返回的是一个三元组(root, dirs, files), root 所指的是当前正在遍历的这个文件夹的本身的地址,dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录), files 同样是 list,内容是该文件夹中所有的文件(不包括子目录).如果 topdown 参数为真,walk 会遍历 top 文件夹,与top文件夹中每一个子目录。
for root, dirs, files in os.walk(path): for file in files: zipn.write(os.path.join(root, file))
3. shutil.copy(filename, generic_filename)
if copy: shutil.copy(filename, download_location) logger.notify('Saved %s' % display_path(download_location)) requirements = os.path.join(tempdir, 'requirements.txt')shutil.copy('tests/samples/requirements.txt', requirements)
4. glob.glob
匹配路径下的某种规则的文件。返回list
imgs_list = glob.glob(os.path.join(root, sDir, '*.png'))
5. lambda表达式
p = lambda a, b: (a**2 + b**2) ** 0.5p(1,2)
6.map(func, *iterables) --> map object表达式
s1 = [1,2,3]s2 = [4,5,6]t = map(lambda x,y: x+y,s1,s2)print(list(t)) 返回可迭代对象,需要list调用来显示所有结果
7.filter(function or None, sequence) ->iterator
filter函数会对序列参数sequence中的每个元素调用function函数,最后返回的结果包含调用结果为True的元素。
s1 = [1,2,3]t = map(lambda x: x>2,s1)
8.批量修改文件名
import ospath="train"filename_list = os.listdir("train")map=dict(zip(list1,list2))for item in filename_list: os.rename(os.path.join(path, item),os.path.join(path, "train_"+str(map[item])+".csv"))
9.批量读取csv
filename_list = os.listdir("train")train_data=[]for item in filename_list: train_data.append(pd.read_csv(path+"/"+item))train_data=pd.concat(train_data)
10.numpy 的数组拼接,vstack,hstack,concatenate,stack
np.vstack 沿着axis=0拼接p.concatenate([a,b],axis=0)等价np.hstack 沿着axis=1拼接 和np.concatenate([a,b],axis=1)等价
stack可以输入array和一组array,对于一个array即对重新选取排列。
大家关于Python 有什么看法也可以一起讨论哈!以上如有写的不对的地方多多包涵,烦请赐教。