精华内容
下载资源
问答
  • Python将.dat文件转换成.csv文件

    千次阅读 热门讨论 2020-01-18 15:44:27
    在找数据的时候有时候会找到.dat文件,我发现了两种方式。 第一种很简单,是利用可以打开dat的软件进行转换,但是这种方式在只有一个数据的时候可以使用,数据集多时很不方便。 另一种就是使用python代码,可以将...

    在找数据的时候有时候会找到.dat文件,我发现了两种方式。

    第一种很简单,是利用可以打开dat的软件进行转换,但是这种方式在只有一个数据的时候可以使用,数据集多时很不方便。

    另一种就是使用python代码,可以将某一目录下的所有文件.dat转换为csv【其实不止这两种,xls、csv、dat等之间转换都可以,看自己的需求】

    一、利用数据软件转换

    1.sublime+excel

    把下载的文件用sublime打开,删掉最上方的标题,另存为.txt文件,用excel打开,再次另存为.csv

    2.SPSS

    由于SPSS可以打开.dat文件,因此直接在spss中打开,再另存为

    二、Python实现

    原理:用Python实现的原理就是获取某一目录下的所有文件,分离成文件名和文件类型,当类型为dat的时候就创建一个同名的csv,把dat中的内容写进csv

    import os
     
    path_0 =r"D:\"   #原文件目录
    path_1 = r"D:\"   #存放目录
    filelist = os.listdir(path_0)   #目录下文件列表
    
    for files in filelist:
     
        dir_path = os.path.join(path_0, files)
        #分离文件名和文件类型
        file_name = os.path.splitext(files)[0] #文件名
        file_type = os.path.splitext(files)[1]  #文件类型
    
        #将.dat文件转为.csv文件
        if file_type=='.dat':   #可切换为.xls等
            file_test = open(dir_path,'rb')  #读取原文件
            new_dir = os.path.join(path_1,str(file_name)+'.csv')
            #print(new_dir)
            file_test2 = open(new_dir,'wb')  #创建/修改新文件
            for lines in file_test.readlines():
                lines=lines.decode()
                str_data = ",".join(lines.split(' '))  #分隔符依据自己的文件确定
                file_test2.write(str_data.encode("utf-8"))
            file_test.close()
            file_test2.close()

    运行结束没有报错的话就会看到相应目录下多出了对应名字的csv文件

    三、问题小结

    1.报错'utf-8' codec can't decode byte 0xff in position 25: invalid start byte

    看有很多小伙伴提到这个报错的问题,就去查了一下,直接贴解决方案,就是改一句话

    把for循环中的这一行(代码行号21),

    lines=lines.decode()

    更改为

    lines=lines.decode("utf8","ignore")

    应该就能解决了

    具体原因参考其他博主的博客https://blog.csdn.net/sinat_25449961/article/details/83150624

    2.dat转csv后打开乱码

    这个的代码解决方法没有找到。

    1.有一种可能性是该dat文件是一种特殊文件,例如视频文件等,因此本身就是无法用csv正常显示的,打开后的乱码问题也无法解决。如果只是随便找的一个dat结尾的数据文件来进行转换,大概率是这个原因

    2.尝试将utf-8替换为别的编码方式,例如gbk、gb2312等,看有没有可以正常显示的

    展开全文
  • pandas 1.文件读操作 import pandas as pd #整个文件同时读取 csv_file = pd.read_csv("test.csv") print(csv_file['data'][0]) #只读取指定列 ...file = pandas.DataFrame(columns=['index','dat

    一、pandas

    1.文件读操作

    import pandas as pd
    
    #整个文件同时读取
    csv_file = pd.read_csv("test.csv")
    print(csv_file['data'][0])
    
    #只读取指定列
    csv_file = pd.read_csv("test.csv", usecols=['data'])
    print(csv_file)
    
    

    在这里插入图片描述

    2.文件写操作

    import pandas
    file = pandas.DataFrame(columns=['index','data'],data=[[0,"今天"],[1,"明天"]])
    file.to_csv('test.csv')
    

    在这里插入图片描述

    二、 open

    1.文件读操作

    txt_file = open("test.txt",encoding='utf-8')
    for line in txt_file.readlines():
        print(line)
    

    在这里插入图片描述

    2.文件写操作
    【注意】此处如果需要写入数字时,需要将数字加引号转为字符型,不然写入会报错。

    data = [["0","今天"],["1","明天"]]
    with open("text.txt","w",encoding='utf-8') as f:
        for i in data:
            f.writelines(i)
    

    在这里插入图片描述

    三、xlrd、xlwt

    1.文件读操作

    import xlrd
    xls_file= xlrd.open_workbook('test.xls')
    sheet = xls_file.sheet_by_name(xls_file.sheet_names()[0])  #读取表格第一个sheet内容
    rows = sheet.nrows   #读取表格的总行数
    col_name = sheet.row(0)[1].value   #获取第1列列名
    col = []  #用于存储列的所有数据
    for i in range(1,rows):   #遍历该列中除列名外所有行数据
        row_values = sheet.row(i)   #获取第i行所有列的数据
        phenomenon = row_values[1]   #取第一列数据
        col.append(phenomenon.value)   #将第一列第i行数据存入col中
    print(col_name,'\n',col)
    

    在这里插入图片描述

    2.文件写操作
    【注意】写入表格前,需要保证命名的表格名字事先在存储的当前目录下没有重名的表格存在,否在会报错。

    import xlwt
    file= xlwt.Workbook(encoding='utf-8')   #定义写入的编码格式为utf-8
    sheet = file.add_sheet('sheet1', cell_overwrite_ok=True)   #增加xls文件的sheet
    data = [[0,"今天"],[1,"明天"]]   #定义存入数据data
    for i in range(len(data)):  #遍历data一维长度
        sheet.write(i+1, 0, data[i][0])  #取data第i个数组中第一个数据,存入表格第i+1行第一列
        sheet.write(i+1, 1, data[i][1]) #取data第i个数组中第二个数据,存入表格第i+1行第二列
    col_name=['index','data']     #定义存入数据列名col_name
    for i in range(len(col_name)):    #依次存入表格的第一行对应列
    	sheet.write(0, i, col_name[i])
    file.save('test.xls')   #将写好的表格存在当前目录下
    

    在这里插入图片描述

    展开全文
  • 一:dat文件 在我之前的博客中,我介绍了对txt文件操作的一些相关知识...在计算机中dat文件分为两种,一种是纯文本文件,类似于txt文件,可用记事本打开但是可能会出现乱码,无法直接利用记事本,写字板等工具直接对...

    一:dat文件
    在我之前的博客中,我介绍了对txt文件操作的一些相关知识,以及如何对其进行读写操作,也介绍了文本文件和二进制文件的一些区别。虽然对txt文件操作已经能够满足储存数据的需求,但txt文件并不能很好的满足一些工作需求,所以这里我引入对dat文件的操作。
    首先,就纯文本类型的数据来说,虽然txt文件已经能够满足存储的需求,但是有时候我们需要将一个如字典和集合这样复杂的对象存入文件中。我们知道txt文件写入操作是将字符串写入文件,如果我们尝试将对象作为操作数输入其中那么就会带来报错,比如下面的这段代码及报错:

    >>> infile = open(r'C:\Users\Desktop\test.txt','w')
    >>> dic = {'1':'a','2':'b'}
    >>> infile.write(dic) #将字典dic写入文件
    Traceback (most recent call last):
      File "<pyshell#3>", line 1, in <module>
        infile.write(dic)
    TypeError: write() argument must be str, not dict
    

    或许我们可以将对象强制类型转化为字符串型以后再写入文件,但是这样将完全改变对象的性质。所以为了将对象写入文件,我们在这里介绍序列化对象的相关知识。
    二:序列化对象
    序列化对象是是将对象转化为字节流的过程,使之便于保存到文件之后读取。在python中,序列化对象的过程可以叫做pickling,而python标准库提供了一个叫做pickle的模块,在序列化对象时需要先导入此模块。既然是对文件进行操作,那么和对txt文件操作一样,我们需要先定义一个文件对象,仍然是用open()函数打开文件,但是打开模式需要注意:

    模式 描述
    rb 只读二进制文件,如果文件不存在,则将抛出错误
    wb 只写二进制文件,如果文件不存在将创建文件;如果文件已存在将清空之前的内容
    ab 附加到二进制文件末尾

    (1)如果想写入文件,可以按照以下步骤进行:
    ·导入pickle模块
    import pickling
    ·打开一个二进制文件进行写入
    in_file = open(‘file_name.dat’,‘wb’)
    ·调用pickle模块中的dump方法序列化对象,并写入文件
    pickle.dump(object,file) :其中object是欲序列化的变量,file是文件变量
    ·关闭文件,断开文件和程序的连接
    接下来以一段程序为例:

    import pickle
    infile = open('test.dat','wb') #以wb模式打开文件
    dic = {'1':'a','2':'b','2':'3'}
    pickle.dump(dic,infile) #序列化对象并写入文件
    infile.close()
    

    (2)如果想要从文件读取或解析已经序列化好的对象,可以按照以下步骤进行:
    ·导入pickle模块
    ·打开一个二进制文件进行二进制读取
    out_file = open(‘test.dat’,‘rb’)
    ·调用pickle模块中的load方法读取一个文件并解析他
    object = pickle.load(file) :其中file是文件对象变量,object将引用文件读取并解析出的一个对象
    ·关闭文件,断开文件和程序的连接

    import pickle
    outfile = open('test.dat','rb') #以rb模式打开文件
    dic = pickle.load(outfile)
    outfile.close()
    

    三:范例
    接下来我将以一个简单的学生信息管理程序为范例讲解序列化对象:

    import pickle
    def main():
        choice = int(input('1:存入学生信息数据 2:读取学生信息数据 3:退出'))
        while choice!=3:
            if choice==1:
                load() #存入数据
                choice = int(input('1:存入学生信息数据 2:读取学生信息数据 3:退出'))
            elif choice==2:
                read() #读取数据
                choice = int(input('1:存入学生信息数据 2:读取学生信息数据 3:退出'))
    def load():
        again = 'y'
        infile = open('test.dat', 'ab')
        while again == 'y':
            student = {} #创建一个空的字典
            student['ID'] = input('学号:') #以字符串ID为键,以输入内容为值
            student['name'] = input('姓名:')
            student['address'] = input('地址:')
            pickle.dump(student,infile)
            again = input('是否继续输入:y/n')
        infile.close()
    def read():
        id = input('请输入欲查找学生id')
        outfile = open('test.dat','rb')
        end = False #判断是否已经达到test.dat文件末尾
        while not end:
            try:
                student = pickle.load(outfile)
                if student['ID'] == id:
                    print('姓名:',student['name'])
                    print('地址:',student['address'])
                    print()
            except EOFError: #达到文件末尾
                end = True
    main()
    

    程序的运行结果截图如下:
    在这里插入图片描述

    展开全文
  • 学习笔记——Python打开文件失败

    千次阅读 2019-07-22 17:42:42
    你会认为:打开一个在C:/note目录下的名为text.dat文件。 然而······ Python却是这样认为的:“\n”一个换行字符,“\t”一个制表符。尝试打开一个名为C:(换行符)ote(制表符)ext.dat文件。 解决...

    文件打开失败可能的原因:

    如果你使用下面这种方式来打开一个文件:

    myfile = open('C:\note\text.dat', 'w')
    

    你会认为:打开一个在C:\note目录下的名为text.dat的文件。
    然而······
    Python却是这样认为的:“\n”一个换行字符,“\t”一个制表符。尝试打开一个名为C:(换行符)ote(制表符)ext.dat的文件。

    解决方案有以下两个:

    第一种:增加字母r
    如果字母r(大写或小写)出现在字符串的第一引号的前面,它将会关闭转义机制。

    myfile = open(r'C:\note\text.dat', 'w')
    

    第二种:编写两个反斜杠
    因为两个反斜杠是一个反斜杠的转义序列,所以可以直接编写两个反斜杠来保留反斜杠。

    myfile = open('C:\\note\\text.dat', 'w')
    
    展开全文
  • 我在学习机器学习分类算法实现中发现csdn上面有很多dat数据文件,所以想要利用这些dat数据文件,但不知道如何导入,经过一番摸索,有一种方法可以完全实现dat文件转化为csv文件导入python: 首先下载一个dat文件 ...
  • Pythondat某一列乘以某个数的方法

    千次阅读 2019-04-01 18:37:07
    a = np.loadtxt('RDE_GW_None.dat') #loadtxt可以打开txt文件,也可以打开dat文件,这两种文件都是文本文件,方法有print (a.shape) a[:,2]=a[:,2]*1000 #处理第3列(0开始数2就是第3行, :表示所有...
  • python读取txt文件:(思路:先打开文件,读取文件,最后用for循环输出内容) 1、读取 1.1基于python csv库 #3.读取csv至字典x,y import csv # 读取csv至字典 csvFile = open(r'G:\训练小样本.csv', "r") reader = ...
  • 这是数据用工具打开的样子:<img alt="" height="854" src="https://img-ask.csdnimg.cn/upload/1619065748818.png" width="998" /></p> 这是我读取的结果: <p><img alt="" height="325" src=...
  • python微信图片dat转码

    2021-05-25 16:24:07
    微信dat转码看这里 ... 环境 Python 3.6.3 ...1.先用工具打开.bat文件,但会看到一堆乱码。如下图 示例图 2.用notepad++的话可以,通过插件以16进制打开打开如下图 示例图 3.再用 ...
  • python中的文件操作

    2017-06-08 20:54:00
    python中与文件有关的知识如下 1 文件的基本处理(三个步骤):打开文件----->文件操作------>关闭文件 打开文件:open() eg. 打开一个名为“numbers . dat”的文本文件 infile = open (“numbers.dat”, ...
  • bin文件转dat文件

    千次阅读 2019-11-20 17:21:30
    方法1:xxd 转换的格式有限 方法2:hexdump -v -e '"%08x\n"' xxx.bin >...# 打开文件 print(SrcFile) SrcFileID = open(SrcFile, 'rb') # 获取字符串列表 lines = SrcFileID.read() # data = struc...
  • python微信图片dat转码(整理版)

    千次阅读 2019-12-13 11:33:00
    通过python 实现电脑版微信中图片转码(原.dat转成JPG或PNG) 分析 据说微信图片是用异或值加密(实际就是转码) 1.先用工具打开.bat文件,但会看到一堆乱码。如下图 用notepad++的话可以,通过插件以16进制打开。...
  • 文件可以看做是Python的数据类型之一。 对文件的的操作包括;...举例:打开一个命名为“number.dat"文件:open("number.dat","r")  打开一个命名为“music.mp3”音乐文件:open("music.mp3",'rb') 注意:音乐
  • Python读取Excel文件数据的2种方式 1、利用xlrd库函数 import xlrd #读取excel文件 def excel(fileName,sheetName): wb = xlrd.open_workbook(fileName)# 打开Excel文件 sheet = wb.sheet_by_name(sheetName)#...
  • Python文件操作

    2017-09-19 20:17:36
    文件打开: Infile=open(“num.dat”,”r”)#r,w为读和写文本文件fname1=raw_input().strip()#去空格 fname2=raw_input().strip() f1=open(fname1,"r") f2=open(fname2,"w") for line in f1: f2.write(line)
  • 网上看到有dat文件破解的,不过都是java和python的,没看到有JS的 自己有了些兴致,所以打算用JS实现。平台是Node 本文按照流程来讲,方便大家理解。如果直接想要实现的代码,请拉到最后。 1. 查看加密文件 微信的...
  • 文件是存储在硬盘上的,程序读文件首先就是要将文件和内存对象关联起来,打开文件,再通过一系列操作使得对象能获得文件的内容。 open()方法能打开文件并在内存中创建一个文件对象。 使用方法:open(磁盘文件名,...
  • 在检查微信缓存中“FileStorage”文件夹时发现了其目录下的“Image”文件夹,想到可能是使用过程中缓存的聊天图片等,但是打开文件夹发现都是dat文件,用图片浏览器打开也提示无法查看。 想到可能是进行了加密...
  • python 文件的读写

    2019-01-18 20:11:06
    1)打开文件,得到文件句柄并赋值给一个变量 2)通过句柄对文件进行操作 3)关闭文件 例如: f = open(‘chenli.txt’) #打开文件 first_line = f.readline() print(‘first line:’,first_line) #读一行 data = f....
  • python正则操作大文件

    2020-12-17 13:48:19
    打开文件的模式说明 打开文件的模式有(默认为文本模式): 模式 说明 r 只读模式,也是默认模式,文件必须存在,不存在则跑出异常; w 只写模式,不可读;不存在则创建,存在的话如果有进行写入动作则清空文件内容...
  • python csv文件数据处理

    2019-07-27 10:34:10
    根据athlete_events.csv文件统计历史上金(奖)牌总数最高的三个国家和金(奖)牌数 使用pandas处理csv文件 ...#打开csv文件并且只使用第7列和第十四列 #引号内为athlete_events.csv的地址 根据个人情况修改 dat...
  • #打开文件,获取文件句柄file2,后续通过file2这个文件句柄对文件进行各种操作方法,默认文件以只读模式打开,只读时不能对文件进行写操作 file2 = open(test_file,r,encoding=utf-8) #一次将文件内容全部读取 dat
  • 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1 f = open('lyrics') #打开文件 2 first_line = f.readline() 3 print('first line:',first_line) #读一行 4 print('我是...
  • Python---文件操作

    2019-09-25 13:23:30
    1 打开文件,得到文件句柄并赋值给一个变量 2 通过句柄对文件进行操作 3 关闭文件 例子:(小重山.txt) 昨夜寒蛩不住鸣。 惊回千里梦,已三更。 起来独自绕阶行。 人悄悄,帘外月胧明。 白首为功名,旧山...
  • 学习笔记,打开文件和异常处理,示例代码: #文件打开和测试 #增加异常处理代码 #1、globals()的应用场景,在finally环境里的时候需要资源回收,但是文件对象打开并不在finally代码块里 #所以可以使用globals的...
  • @概述 通常的文件读写要么是读入/写出字符,要么是读入/写出字节;...对文件进行二进制IO时,文件打开方模式必须是字节读写模式; 我们习惯上将存储二进制IO数据的文件以.dat后缀命名; pickle是系统标准...
  • Python查看文件用的什么类型的编码

    千次阅读 2019-05-09 21:25:08
    文件主要分为二进制文件和文本文件这两种,看你想要查看哪种文件的编码,如果...# 我要打开的是二进制的文件,所用的是rb f=open('b.dat','rb') data=f.read() print(chardet.detect(data)['encoding']) # 去掉['enc...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

python打开dat文件

python 订阅