碎碎念
想要学习python已经很久了,但是一直走走停停,每次起身都是从头开始,因为没有连续的学习计划,可以说所有的尝试都是浪费时间。今年总算走到大四了,专业课程补考也都过了,在找工作之余有时间充实一下自己,找了一本书从头认真学习。为了更好的混进csdn,混进开源社区,也是为了鞭策自己,遂开了这个头,以后所有的学习经历都会好好记录下来,也希望能给求学的后来人有帮助。
中间有一些学习方法的建议,不需要的直接拉到最后看代码部分。所有总结都以注释的形式写在代码块中。
语言学习
学习编程语言的路线是清晰明了的。对于一个正常的理工科大学生来说,对于计算机的接触应该很多。语言学习无非一下几点,
- 语法正确
- 功能扩展
- 格式规范
很多人学完语法就认为自己已经掌握了某某语言了,但其实并非如此。且不说机器如何实现,要掌握一门语言起码要对其常用的扩展包能熟练运用,对自己以往在其他语言中实现的数据结构也能搬过来。这样,才是一个完美的入门。
资料选择
python的学习资料根本不缺,很多人都可以依据自己的学习习惯去选择合适的资料。但无论市面上的书籍还是网络上的视频,名字都当当响什么快速入门,什么7天掌握,反正吹的怎么样都不过分。但是资料选择恰恰是入门的关键一步,如果选择不好,会直接影响学习的积极性和效率。
- 关于视频课
视频课的好处是有老师带着,而且还有很多同伴一起看着视频学习。很多在网上投稿课程的老师都会有联系方式,这就使得我们在学习过程中遇到问题有人可问,有路可走。但是,视频课并不适合入门。 视频的投稿者往往已经深谙此道,讲课的时候无意间就会使用让初学者摸不着头脑的表达。这些小的疑点会让学习者如鲠在喉,继续听吧,心里不安,停下来求教吧,发现越扯越大,如果搞明白这一个小问题,都不用继续看视频了,都学会了。
但是视频课不是没有用的。如果有的同学有编程基础,或者是其他语言转过来的,那么视频课就可以选择了。计算机语言嘛,融会贯通,大家都差不多的。此外视频课在提高部分会特别有用。例如想学python的某个包啊,想做一个小项目啊。这时跟着视频走会非常顺利,慢慢的顺着视频的思路,上手会很快。
总体来说,视频课由于节奏掌握在授课老师的手里,所以效率会低一些。有的地方懂了,视频却为了顾及大多数人讲的很慢。此外,免费课程由于没有付出和监督,许多人也看着看着就不看了。
- 关于书籍
书籍是学习的好工具。选择一个合适的书自学,学习会变得得心应手。当有不懂的问题时,带着书去求问,也会方便很多。书籍推荐部分就不写了,但是所有的书大概有两类:一类注重基础,一类注重应用。
对于没有编程经验的人来说,选择一本事无巨细的超基础书非常好。最好每一个内容从变量创建到函数操作都有例子讲解,会迅速提升自信,建立编程的总体认识。
对于有其他语言基础的人来说,太详细的书会显得累赘,推荐大家使用偏向应用的书籍。这种书籍语法部分会很少的篇幅讲完,非常适合理工科的学生使用。在一个个生动的工程中,可以扩展思维,了解这门语言的优势,也可以更快的实现自己的“想法”。
总体来说,一门语言的学习是没有尽头的,很多程序猿手边都会放一本辞海级别的大部头,在遇到问题的时候翻一翻,但这种书也只是工具类,不要拿着这种书啃,这就和学英语背词典一样愚蠢。
学习方法
选择好合适的资料,就需要合适的学习方法。在有大片大片时间的时候,做一个计划也是不错的选择。但学习语言的要点是 多敲代码 ,无论什么语言,多敲代码才会进步。
如果学习过计算机基础知识,那融会贯通的对比学习也是非常重要的。寻找语言的不同,比较各种语言语法的优劣。试着思考语言的底层运作,至少在内存层面多去品味。
还有一个是多提问,多实验。语言的规范是非常严格具体的,而在大多数我们只是使用皮毛。许多语言的语法有模棱两可的地方,发现它,玩弄它,你就会慢慢的从一个学习者变成一个支配者。有的人觉得这样说太自大了,但最近我在看《C专家编程》《C陷阱和缺陷》这两本书,越来越觉得我们在学习的过程中就应该善于思考,很多问题在我们初次学习就会隐隐的埋在心里,试着表达出来,就会极大的提升自己。这也是我今后会记录的主要内容。下面就来进入今天的正题。
os文件操作函数功能测试
############################################# 文件操作包。###########################################
# #
#
##
# --------------------------os包------------------------ #
#| os 包包括了目录创建,目录删除,文件删除,执行操作系统命令等方法|#
# —----------------------------------------------------- #
import os
#remove方法,删除指定文件
rmfile = "myFile"
if os.path.exists(rmfile): #path 模块功能,检查文件是否存在
os.remove(file)
else:
print(rmfile+" Not Found!")
#mkdir方法,创建指定名称的目录,如果目录存在会出现错误,所以一般先检查目录是否存在
mkdirs = "myDir"
if not os.path.exists(mkdirs):
os.mkdir(mkdirs)
else:
print(mkdirs+" exist!")
#rmdir方法,删除指定名称的目录,
if os.path.exists(mkdirs):
os.rmdir(mkdirs)
else:
print(mkdirs+" Not Found!")
#system方法,以操作系统命令作为参数,执行参数指定的命令。
cur_path = os.path.dirname(__file__)
os.system("clear")
os.system("mkdir dir2")
os.system("cp system.py \dir2")
file = cur_path + "\dir2\system.py "
os.system("vim "+file)
# ##-------------os.path模块---------------##
# ## 对文件路径和文件名进行操作,可以单独导入使用 ##
# 1 abspath() 返回指定文件的绝对路径
# 此方法只是将文件名添加到当前目录的后面,并不会搜索文件,只做一个字符串处理,
# 也不会检测名称是否合法。当文件名开头为/时,直接输出文件名
# 2 basename() 返回文件名或最后的路径名
# 此方法只会将路径字符串最后一个/后面的字符串返回,只做一个字符串处理
# 3 dirname() 返回文件的路径名,不包括文件名 __file__
# 同样只是字符串处理。当参数开头时/时返回一个/,当有多个/时返回除去文件名称和
# 最后一个/的字符串
# 4 exists() 检查指定文件或路径是否存在
# 此方法可以检测路径或文件是否存在,也是仅有的检测方法
# 5 getsize() 返回指定文件的大小 Byte
# 接受一个文件名或完整文件路径,返回文件大小。前者默认当前路径。
# 若文件不存在或无法找到,会报错
# 6 isabs() 检查路径是否为完整路径
# 判断字符串开头是否是/,如果是/返回Ture,不是返回False。
# 仅仅是一个字符串处理函数,并不会检测路径的正确性
# 7 isfile() 检查路径是否指向文件
# 此函数会依据参数寻找文件是否存在,不是简单的字符串处理
# 如果文件不存在,或者路径错误都会返回False
# 8 isdir() 检查路径是否为目录
# 同上,函数会依据参数寻找目录是否存在,若参数错误或者不是目录名
# 则会返回False
# 9 split() 把文件路径名分割成“路径”和“文件”
# 字符串处理函数,将最后一个/分割的两个字符串作为元组返回
# 若没有/则第一个项为空,若只有一个/且为开头,则第一个元素为/
# 10 splitdirve() 把文件路径名分割成“磁盘名”和“文件路径名”
# 测试机器为单固态mac,无论输入怎样的参数,磁盘名始终为空
# 接上U盘之后,分割U盘内的完整路径,磁盘名也是空
# 仿照windows下的路径方式,添加盘符,结果也为空
# 11 join() 把路径名和文件名合并成完整路径
# 第一个参数为路径,第二个参数为文件名。参数正确性不检测,只做字符串处理
# 对应参数的格式必须正确,但路径名的格式似乎没有要求,无论输入什么都会接受
# 文件名必须是不以/开头的文件名
# 文件名以/开头,则会输出完整的文件名字符串
# 以上的文件名,路径名只代表参数,不代表参数本身的意义
# # ----------------------------------------
import os
file1 = os.path.abspath("system.py")
print(file1)
file2 = os.path.basename(file1)
print(file2)
file3 = os.path.dirname("sdfe/sdfwe/wef")
print(file3)
yorn = os.path.exists(file1)
print(yorn)
filesize = os.path.getsize("/Users/wch/Desktop/myfunc.c")
print("The size of the file is {}".format(filesize)+" Byte.")
yorn = os.path.isabs("sdfe/sdfe/dfe/")
print(yorn)
yorn = os.path.isfile("/Users/wch/Desktop/")
print(yorn)
yorn = os.path.isdir("/Users/wch/Documents/dir2")
print(yorn)
cutpath1,cutpath2 = os.path.split(file1)
print(cutpath1+" "+cutpath2)
cutpath1 = os.path.splitdrive("/Volumes/DEEPINOS/ef")
print(cutpath1)
filename = "\\sd/feir2"
pathname = "\sktop\\"
fallname = os.path.join(pathname,filename)
print(fallname)
# --------------------os.walk模块------------------##
# 根据测试,os.walk 模块的返回值应该是一个元组,数组每一项 #
# 是一个有三个元素的元组,分别是 路径 目录列表 文件列表 ##
# ------------------------------------------------##
import os
import sys
cur_path = os.path.dirname(__file__)
simtree = os.walk(cur_path)
for dirname,subdir,files in simtree:
print("path:",dirname)
print("dirs:",subdir)
print("files:",files)
print()
step1 = (1,"壹","one")
step2 = (2,"贰","two")
step3 = (3,"叁","three")
mytree = (step1,step2,step3)
for s1,s2,s3 in mytree:
print("s1:",s1)
print("s2:",s2)
print("s3:",s3)
print()