Python日常问题总结

总结平时学习遇到的python使用中出现的问题以及python的一些用法,注意事项

使用问题

python读取csv文件出现’\ufeff’乱码的解决方法

原文链接

使用python中的csv模块读取文件的时候使用encoding=’utf-8’解码,会在读取了列表的一个位出现‘‘\ufeff’’,代码如下:

1
2
3
4
5
6
7
8
9
import csv

def csv_reader():
with open('2.csv','r',encoding='utf-8') as f:
reader=csv.reader(f)
return list(reader)

list1=csv_reader()
print(list1)
1
2
3
#输出结果
[['\ufeff2', '3'], ['3', '4'], ['4', '5'], ['5', '6'], ['6', '7'], ['7', '8'], ['8', '9'],
['9', '10'],['10', '11'], ['11', '12'], ['12', '13'], ['13', '14'], ['14', '15']]

要去掉这个字符,只需要在读取的时候使用encoding=’utf-8-sig’格式就好,代码如下:

1
2
3
4
5
6
7
8
9
import csv

def csv_reader():
with open('2.csv','r',encoding='utf-8-sig') as f:
reader=csv.reader(f)
return list(reader)

list1=csv_reader()
print(list1)
1
2
#输出结果
[['2', '3'], ['3', '4'], ['4', '5'], ['5', '6'], ['6', '7'], ['7', '8'], ['8', '9'], ['9', '10'], ['1

在java中调用cmd,运行python程序,其实是通过cmd调用,本代码是在网上找到的代码修改而来,忘记具体地址了,抱歉。

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public String doimagecaption() throws InterruptedException, IOException {
BufferedReader br = null;
// System.out.print("开始运行");
File file = new File("D://temp.tmp");//新建一个用来存储结果的缓存文件
if(!file.exists()) {
file.createNewFile();
System.out.print("创建文件");
ProcessBuilder pb = new ProcessBuilder().command("cmd.exe", "/c", "g:&cd imgcp&activate&python main.py --phase=test --model_file=\"./models/289999.npy\" --beam_size=3").inheritIO();
//ProcessBuilder pb = new ProcessBuilder().command("cmd.exe", "/c", "ipconfig").inheritIO();
System.out.print("创建pb");
pb.redirectErrorStream(true);//这里是把控制台中的红字变成了黑字,用通常的方法其实获取不到,控制台的结果是pb.start()方法内部输出的
pb.redirectOutput(file);//把执行结果输出。
pb.start().waitFor();//等待语句执行完成,否则可能会读不到结果。
InputStream in = new FileInputStream(file);
br= new BufferedReader(new InputStreamReader(in));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
br = null;
file.delete();
}
if(br != null)
br.close();
return "success";
}

如果使用的话只需要按如下示意修改即可

1
2
command("cmd.exe", "/c", "填入本应在cmd里输入的内容,多条语句可以使用&拼接").inheritIO();


Python日常问题总结
https://shanhainanhua.github.io/2019/10/23/Python日常问题总结/
作者
wantong
发布于
2019年10月23日
许可协议