遇到的问题:
练习时一直报错:属性异常AttributeError: module ‘json‘ has no attribute ‘dumps‘
原因: 文件名我取名为了json.py.
Python找import json的顺序是:
首先我们要了解python中import引入模块的原理机制。当我们执行一行 from package import module as mymodule 命令时,Python解释器会查找package 这个包的module模块,并将该模块作为 mymodule 引入到当前的工作空间。所以import语句主要是做了二件事:
查找相应的module
加载module到local namespace
在import的第一个阶段,主要是完成了查找要引入模块的功能。查找时首先检查 sys.modules (保存了之前import的类库的缓存),如果module没有被找到,则按照下面的搜索路径查找模块:
.py 所在文件的目录
PYTHONPATH 中的目录
python安装目录,UNIX下,默认路径一般为/usr/local/lib/python/
3.x 中文件内容
也就是说,当我们import json的时候,它会先搜索json.py所在目录有没有对应的模块,由于我们命名的json.py与json模块文件重名,所以会误以为我们自己创建的json.py即为json模块文件,所以会出现这样的错误。
解决方法:改掉文件名。不要使用python的库名,内建函数名等关键字作为文件名
os.path.abspath() 返回绝对路径。
os.path.dirname() 返回当前路径的目录。
3,time,datetime
时间有三种表示方法:
时间戳 54594275742572 可以反换算成格式化时间。
格式化时间 2019-02-49 12:34:00
元组,struct_time,如下time.localtime()返回的格式。
struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
time.struct_time(tm_year=2019, tm_mon=11, tm_mday=5, tm_hour=15, tm_min=52, tm_sec=7, tm_wday=1, tm_yday=309, tm_isdst=0)
tm_wday(0到6 (0是周一),一周的第几日)
tm_yday(这一年的第几年,已经309天,总共365天。)
tm_isdst dst 是指夏令时,daylight saving time
结构化时间里调用单独的年,月日时。
s = time.localtime()
s.tm_mon #单独的月时。
11 #返回11月
时间戳转换
24395775/3600/24/365 +1970 即得出当前年份。
time.mktime()
time.strftime()
time.strptime()
time.localtime()
time.gmtime()
4,random
import random
import string
print random.randint(1,50)
print random.randrange(0, 101, 2)
print random.random() #0-1之间的浮点数。
print random.uniform(1, 10)
print random.choice(‘abcdefghijklmnopqrstuvwxyz!@#$%^&*()‘)
print random.sample(‘zyxwvutsrqponmlkjihgfedcba‘,5)
ran_str = ‘‘.join(random.sample(string.ascii_letters + string.digits, 8))
print ran_str
print ‘‘.join(random.sample([‘z‘,‘y‘,‘x‘,‘w‘,‘v‘,‘u‘,‘t‘,‘s‘,‘r‘,‘q‘,‘p‘,‘o‘,‘n‘,‘m‘,‘l‘,‘k‘,‘j‘,‘i‘,‘h‘,‘g‘,‘f‘,‘e‘,‘d‘,‘c‘,‘b‘,‘a‘], 5))
print random.choice([‘剪刀‘, ‘石头‘, ‘布‘])
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print random.shuffle(items)
random.randint() #用于生成一个指定范围内的整数。
5,os
os.chdir(r‘/‘) # r为转义。 切换当前目录。
os.getcwd() #得到当前目录
原文:https://blog.51cto.com/rubyisteleanor/2448074