Чтение файла Python + запись

Посмотрите эту ссылку для ответа Objective-c: Ошибка CFURLSetResourcePropertyForKey при отключении резервного копирования данных в NSDocumentDirectory

Ответ более старой версии Swift:

var str:String = "/var/mobile/Containers/Data/Application/3039975A-5E05-4A4C-8000-55C681A7C35F/Documents/index.html"

var url:URL = URL.init(fileURLWithPath: str)

Swift 4 Ответ:

var str:String = "/var/mobile/Containers/Data/Application/3039975A-5E05-4A4C-8000-55C681A7C35F/Documents/index.html"

var url:URL = URL(string: str)!

5
задан GeekJock 30 May 2009 в 03:32
поделиться

5 ответов

Хотя это легко выполнимо, становится проще с модулем csv .

>>> import csv
>>> reader = csv.reader(open('C:/www/stackoverflow.txt'), delimiter='\t')
>>> for row in reader:
...     print row
...
['1', 'John Smith', 'Developer', 'http://twiiter.com/johns', 'Chicago, IL']
['2', 'John Doe', 'Developer', 'http://whatever.com', 'Tallahassee, FL']

Кроме того, как уже указывалось, точки с запятой не нужны в Python. Попробуй избавиться от этой привычки :)

9
ответ дан 13 December 2019 в 22:15
поделиться

Стандартная библиотека Python имеет модуль для чтения и записи файлов CSV (значения, разделенные запятыми) , который можно заставить работать с файлами, разделенными табуляцией, такими как ваш. Вероятно, это излишне для этой задачи.

0
ответ дан 13 December 2019 в 22:15
поделиться

Знание точного количества столбцов помогает самостоятельно задокументировать код:

fwrite = open("d:/icm_db/wp_sql/wp.users.sql","w")

for line in open("d:/icm_db/users.txt"):
  name, title, login, location = line.strip().split("\t")

  # Double up on those single quotes to avoid nasty SQL!
  safe_name = name.replace("'","''")
  safe_login = name.replace("'","''")

  # ID field is primary key and will auto-increment
  fwrite.write( "INSERT INTO `wp_users` (`user_login`, `user_name`) " )
  fwrite.write( "VALUES ('%s','%s');\n" % (safe_name,safe_login) )
1
ответ дан 13 December 2019 в 22:15
поделиться
fwrite = open('/home/lyrae/Desktop/E/wp.users.sql','a')
fread = open('/home/lyrae/Desktop/E/users.txt','r')

for line in fread:
    line = line.split("\t")
    fwrite.write("insert into wp_users ( ID, user_login, user_name ) values (%s, '%s', '%s')\n" % (line[0], line[1], line[2]))

fread.close()
fwrite.close()

Предполагая, что файл users.txt имеет вид:

1   John Smith  Developer   http://twiiter.com/johns    Chicago, IL
2   Billy bob   Developer   http://twiiter.com/johns    Chicago, IL
3   John Smith  Developer   http://twiiter.com/johns    Chicago, IL

wp.users.sql будет выглядеть так:

insert into wp_users ( ID, user_login, user_name ) values (1, 'John Smith', 'Developer')
insert into wp_users ( ID, user_login, user_name ) values (2, 'Billy bob', 'Developer')
insert into wp_users ( ID, user_login, user_name ) values (3, 'John Smith', 'Developer')

Предполагается, что только 1 табуляция разделяет идентификатор, имя и позицию

0
ответ дан 13 December 2019 в 22:15
поделиться

Вам, вероятно, понадобится что-то вроде этого: data = line.split ("\ t")
Это даст вам хороший объект последовательности для работы.
(Кстати, точка с запятой в Python не нужна. Здесь есть одна: строка печати; )

Как заметил Дейв, это может оставить там новую строку. Вызовите strip () в строке перед разделением, например: line.strip (). Split ("\ t")

0
ответ дан 13 December 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: