首页 > 学技术 > 技术网文 > Python > 正文

[保留] 请教如何把文本文件保存成unicode格式?


来源 chinaunix.net 酷勤网整理

windows下记事本可以把文本文件保存成unicode格式,请问python如何直接把文本文件保存成unicode格式。

另外,如何把保存的文本文件设置成隐藏文件。

谢谢。



 xichen 回复于:2005-09-09 19:59:44

选择utf-8编码,idle就可以将文件存为unicode
点文件的属性可以把文件设置为隐藏.


 nbfan 回复于:2005-09-09 21:55:12

斑竹你真会开玩笑,我的意思是如何在程序里直接把文件设置成隐藏属性.


 nbfan 回复于:2005-09-09 22:01:23

引用:原帖由 "xichen" 发表:
选择utf-8编码,idle就可以将文件存为unicode
点文件的属性可以把文件设置为隐藏.



请问你说的这个是在option下的configure里的general里的那里设置么?
如果是这样,那么我实验了,不行.

或者麻烦你说详细一点,谢谢。


 xichen 回复于:2005-09-10 13:08:56

idle 里面在第一行加上
# -*- coding: utf-8 -*-
就可以了.

隐藏的问题
import os 
os.system('attrib +h 文件名')


 nbfan 回复于:2005-09-10 22:47:32

版主,你的办法不行。
下面是我的代码

# -*- coding: utf-8 -*-
import os,sys,string
def filename(dir):
    namelist=[]
    filelist=os.listdir(dir)
    for i in filelist:
        if i[-4:]==".jpg":
            namelist.append(i[:-4])
    return namelist
if __name__=="__main__":
    file=open("config.txt","w")
    name=filename(os.getcwd())
    file.write("&pics="+string.join(name,"|")+"&"+"\n")
    file.write("&names="+string.join(name,".txt|")+".txt&")
    file.close()
    
    

    



 wolfg 回复于:2005-09-10 22:49:36

你到底想实现什么目的?能否讲清楚


 nbfan 回复于:2005-09-10 22:56:27

上面的代码把所有.pic格式的图片,做成flash能读取的文件。取名config.txt
因为本中有中文,必须存成unicode格式flash才能读取,否则乱码。

问题由此而来。

隐藏文件的方法多谢.(我怎么没想到。)


 wolfg 回复于:2005-09-10 23:02:51

引用:原帖由 "nbfan" 发表:
上面的代码把所有.pic格式的图片,做成flash能读取的文件。取名config.txt
因为本中有中文,必须存成unicode格式flash才能读取,否则乱码。

问题由此而来。

隐藏文件的方法多谢.(我怎么没想到。)



try
import codecs

file = codecs.open("config.txt", "w", "utf-8")



 xichen 回复于:2005-09-10 23:08:20

楼上的方法应该正确.


 nbfan 回复于:2005-09-11 11:40:55

这个方法不行 .file.write()都写不了中文了。晕.
斑竹你实验没有/


 wolfg 回复于:2005-09-11 20:09:25

引用:原帖由 "nbfan" 发表:
这个方法不行 .file.write()都写不了中文了。晕.
斑竹你实验没有/



你的代码怎么改的?有错误信息?出现什么现象?

你具体的情况我们无法了解,只能根据你的只言片语给你一些提示,如果不符合你的情况,也请你自己有些钻研的精神。。。


 nbfan 回复于:2005-09-12 12:42:07

代码如下

# -*- coding: UTF-8 -*-
import os,sys,string,codecs
def filename(dir):
    namelist=[]
    filelist=os.listdir(dir)
    for i in filelist:
        if i[-4:]==".jpg":
            namelist.append(i[:-4])
    return namelist
if __name__=="__main__":
    file=codecs.open("config.txt", "w", "utf-8")
    name=filename(os.getcwd())
    file.write("&pics="+string.join(name,"|")+"&"+"\n")
    file.write("&names="+string.join(name,".txt|")+".txt&")
    #os.system('attrib +h config.txt')
    file.close()

    



错误信息

 Traceback (most recent call last):
  File "C:\Python24\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
    exec codeObject in __main__.__dict__
  File "D:\nbfan\MyDocuments\flash\触摸屏程序1\autoconfig.py", line 13, in ?
    file.write("&pics="+string.join(name,"|")+"&"+"\n")
  File "C:\Python24\lib\codecs.py", line 444, in write
    return self.writer.write(data)
  File "C:\Python24\lib\codecs.py", line 178, in write
    data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xca in position 8: ordinal not in range(128)


请帮忙看看。


 wolfg 回复于:2005-09-12 15:22:09

try
import os

import sys
import string
import codecs

def filename(dir):
namelist=[]
filelist=os.listdir(dir)
for i in filelist:
if i[-4:]==".jpg":
namelist.append(i[:-4])
return namelist
if __name__=="__main__":
o_file = open("config.txt", "w")
name = filename(os.getcwd())
o_file.write( codecs.BOM_UTF16 )
for i in name:
o_file.write(i.decode('gb2312').encode('utf16'))
o_file.close()



 nbfan 回复于:2005-09-12 20:28:43

非常感谢wolfg 版主,中国关于python的问题我看也就在这里能找到答案。

import os 
import sys 
import string 
import codecs 

def filename(dir): 
   namelist=[] 
   filelist=os.listdir(dir) 
   for i in filelist: 
      if i[-4:]==".jpg": 
         namelist.append(i[:-4]) 
   return namelist 
if __name__=="__main__": 
   o_file = open("config.txt", "w") 
   name = filename(os.getcwd()) 
   o_file.write( codecs.BOM_UTF16 )
   o_file.write('&pics='.decode('gb2312').encode('utf16'))
   for i in name: 
      o_file.write(i.decode('gb2312').encode('utf16'))
      if i!=name[-1]:
         o_file.write('|'.decode('ascII').encode('utf16')) 
   o_file.close()


改了一下满足自己的要求。


 wolfg 回复于:2005-09-13 09:39:21

加了codecs.BOM_UTF16主要是为了满足你要求与windows的记事本一样,保存成unicode格式,用UltraEdit观察对比一下吧

http://evanjones.ca/python-utf8.html




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=609132
转载请注明作者名及原文出处



收藏本页到: