美文网首页
内置标准package

内置标准package

作者: yepeng05 | 来源:发表于2018-12-17 17:26 被阅读0次

    os模块

    date 模块

    import time
    
    # 获取当前时间
    time.time()    # 返回的是一个时间戳
    time.localtime()    # 返回的是一个 time.struct_time 对象,默认情况下返回的是当前时间
    time.localtime(1256677221)    # 也可以传入一个时间戳,并将其转换为 time.struct_time 对象
    
    time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())    # strftime 必须接收一个 time.struct_time 对象作为参数
    

    假设现在有一数据,数据格式如下图(数据来源于movielens/ml-latest/ratings.csv),数据有4个字段,分别是user_id,movie_id,rating,timestamp(评分提交的时间)


    movielen_ratings.png

    现在的需求是 timestamp 格式的时间不适合使用,需要将其转换为“yyyy-mm”的形式,时间转换的代码如下:

    import sys
    import time
    
    file = sys.argv[1]
    
    with open(file, 'r') as f:
        for line in f:
            ss = line.strip().split(',')
            if len(ss) == 4:
                user_id = ss[0].strip()
                movie_id = ss[1].strip()
                rating = ss[2].strip()
                commit_time = ss[3].strip()
                time_local = time.localtime(int(commit_time))
                month = time.strftime("%Y-%m", time_local)
                print('\t'.join([user_id, movie_id, rating, month]))
    

    上述代码执行的过程中也发现一些问题:

    1、Python 3中已经不在使用 long,直接使用 int 就好
    2、在执行脚本的过程中注意去掉表头(即数据的第一行),不然会报 ValueError: invalid literal for int() with base 10 的错误
    

    基于上面这个数据,假如还要进行按照月份来分割文件的话,可以考虑使用awk命令

    使用 awk 进行文件切割
    1. 注意文件编码需要是 utf-8, 必要时需要转码
    2. 如果需要header信息的话,可以在切割之后再行添加header
    3. 注意关闭文件,不然会报 makes too many open files 错误
    
    awk -F'\t' 'NR>1{fname="ratings_"$4; print $0 >> fname; close(fname);}' ratings.format
    
    awk -F'\t' '{fname="ratings_"$4; print $0 >> fname; close(fname);}' ratings.format
    

    sys模块

    sys模块有一个argv变量,用list存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称。

    运行 python hello.py 获得的sys.argv就是['hello.py']    # 当然这里 python 命令不算是参数
    运行 python hello.py Michael 获得的sys.argv就是['hello.py', 'Michael']
    

    如果想获取当前文件所在的目录:

    import sys
    sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)), 'hive'))
    

    相关文章

      网友评论

          本文标题:内置标准package

          本文链接:https://www.haomeiwen.com/subject/lepckqtx.html