繁体   English   中英

sqlite保存文本文件并按原样输出:python

[英]sqlite saving text file and output as it is : python

我正在尝试使用python将文本文件保存在sqlite中,但是当我尝试检索该文件时,看到换行符和其他字符。 有什么办法可以像原始文件一样输出文件? 有没有解决的办法。

import sqlite3

conn=sqlite3.connect('example.db')
c=conn.cursor()

c.execute("create table code_tag1 (language text, code BLOB, tag text)")
#c.execute("select * from sqlite_master")
with open("bubblesort_java.txt","rb") as f:
    ablob=f.read()

c.execute("insert into code_tag1 values('java',?,'bubblesort')",[buffer(ablob)])
conn.commit()
row=c.execute("select * from code_tag1").fetchone()
print (repr(str(row[1])))
conn.close()

输出为:

'import java.util.Scanner;\r\n \r\nclass BubbleSort {\r\n  public static void main(String []args)     
{\r\n    int n, c, d, swap;\r\n    Scanner in = new Scanner(System.in);\r\n \r\n     
System.out.println("Input number of integers to sort");\r\n    n = in.nextInt();\r\n \r\n    int 
array[] = new int[n];\r\n \r\n    System.out.println("Enter " + n + " integers");\r\n \r\n    for 
(c = 0; c < n; c++) \r\n      array[c] = in.nextInt();\r\n \r\n    for (c = 0; c < ( n - 1 ); 
c++) {\r\n      for (d = 0; d < n - c - 1; d++) {\r\n        if (array[d] > array[d+1]) /* For 
descending order use < */\r\n        {\r\n          swap       = array[d];\r\n          array[d]   
= array[d+1];\r\n          array[d+1] = swap;\r\n        }\r\n      }\r\n    }\r\n \r\n    
System.out.println("Sorted list of numbers");\r\n \r\n    for (c = 0; c < n; c++) \r\n      
System.out.println(array[c]);\r\n  }\r\n}'

如何获取原始文件中的代码?

谢谢

阿比纳夫

输出没有问题。 您正在打印字符串的repr ,这就是为什么它显示\\r\\n等的原因。

>>> data = """Hello
... World"""
>>> 
>>> print data
Hello
World
>>> print repr(data)
'Hello\nWorld'
>>> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM