2 / 2 / 1
Регистрация: 18.03.2014
Сообщений: 147
1

Даны два файла. Скопировать второй файл в начало первого. Удалить первую и последнюю строку во втором файле

04.04.2014, 13:32. Показов 6368. Ответов 21
Метки нет (Все метки)

Вот файл, но здесь не надо использовать readlines -тоесть сделать не применяя строк, дофига чего пробовал, но чо то не получается вот код:
Python
1
2
3
4
5
6
7
8
import shutil
 
f = open('2.txt','r').readlines()
shutil.copy(r'2.txt', r'1.txt')
for i in [0,-1]:
    f.pop(i)
with open('2.txt','w') as F:
    F.writelines(f)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2014, 13:32
Ответы с готовыми решениями:

Дан текстовый файл. Вставить в начало файла его последнюю строку, а в конец первую строку.
Помогите решить задание, заранее спасибо. Дан текстовый файл. Вставить в начало файла его...

Даны два файла. Переписать в третий файл только те слова, которые есть и в первом и во втором файле.
Помогите создать программу: Даны два текстовых файла, содержащих некоторый текст. Переписать в...

Даны два символьных файла. Переписать с сохранением порядка следования компоненты первого файла во второй файл и наоборот.
Плиз прошу помочь с задачами: 1)Из введенного текста распечатать только те слова, которые...

Даны два текстовых файла. Добавить в начало первого файла содержимое второго файла.
Даны два текстовых файла. Добавить в начало первого файла содержимое второго файла.

21
2739 / 2342 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
04.04.2014, 14:15 2
Python
1
2
3
4
5
6
7
8
file1 = open('file1').read().split('\n')
file2 = open('file2').read().split('\n')[1:-2]
file2.extend(file1)
 
result = open('file1', 'w')
for i in file2:
    result.write(i + '\n')
result.close()
1
55 / 55 / 16
Регистрация: 25.03.2013
Сообщений: 178
04.04.2014, 16:14 3
вместо строки 6, 7 можно использовать:
Python
1
map(lambda i: result.write(i + '\n'), file2)
но как мне кажется лучше использовать:
Python
1
result.write('\n'.join(file2))
1
2 / 2 / 1
Регистрация: 18.03.2014
Сообщений: 147
05.04.2014, 17:32  [ТС] 4
Цитата Сообщение от tsar925 Посмотреть сообщение
file1 = open('file1').read().split('\n')
file2 = open('file2').read().split('\n')[1:-2]
file2.extend(file1)
ничего не копирует в первый файл...
питон 2.7.6

Добавлено через 9 минут
Цитата Сообщение от tsar925 Посмотреть сообщение
result = open('file1', 'w')
for i in file2:
* * result.write(i + '\n')
result.close()
ничего не изменяет - ведь надо во втором файле удалить...

и еще ведь списки по моему ваще тут нельзя никак использовать, так как при закрытии файла выдает ошибку
0
2739 / 2342 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
05.04.2014, 18:40 5
Ошибок ни каких не выдает, а на счёт изменения второго файла это да, забыл.

Добавлено через 5 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
file1 = open('file1').read().split('\n')
file2 = open('file2').read().split('\n')[1:-1]
 
changed_file2 = open('file2', 'w')
for i in file2:
    changed_file2.write(i + '\n')
 
file2.extend(file1)
result = open('file1', 'w')
for i in file2:
    result.write(i + '\n')
result.close()
P.S Код ужастный, но рабочий.
0
2 / 2 / 1
Регистрация: 18.03.2014
Сообщений: 147
05.04.2014, 21:39  [ТС] 6
Цитата Сообщение от tsar925 Посмотреть сообщение
file1 = open('file1').read().split('\n')
file2 = open('file2').read().split('\n')[1:-1]
ведь все файлы надо закрывать?
file1.close()
file2.close()
а при закрытии он ругается: 'list' object has no attribute 'close'
потому что split('\n') выдает список.
0
2739 / 2342 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
06.04.2014, 02:57 7
Переменные file1 и file2 содержат списки, а объекты открытых файлов. У списков нет метода close, по этому интерпретатор справедливо ругается на тебя.
Ты сам плодишь ошибки и говоришь, что ни чего не работает
0
45 / 39 / 24
Регистрация: 29.11.2013
Сообщений: 139
06.04.2014, 07:28 8
Цитата Сообщение от Kronos0041 Посмотреть сообщение
ведь все файлы надо закрывать?
Можно так, что-бы не закрывать:
Python
1
2
3
4
5
with open('t_1.txt') as t:
    for x in t:
        file1 = x.split('\n')
 
print(file1)
0
2739 / 2342 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
06.04.2014, 08:30 9
ivsatel, вы посмотрите, что ваш код выведет

Kronos0041, если ты хочешь закрыть эти файлы то вот так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
f1 = open('file1')
f2 = open('file2')
 
file1 = f1.read().split('\n')
file2 = f2.read().split('\n')[1:-1]
f1.close()
f2.close()
 
changed_file2 = open('file2', 'w')
for i in file2:
    changed_file2.write(i + '\n')
changed_file2.close()
 
file2.extend(file1)
result = open('file1', 'w')
for i in file2:
    result.write(i + '\n')
result.close()
0
45 / 39 / 24
Регистрация: 29.11.2013
Сообщений: 139
06.04.2014, 10:06 10
tsar925, Да, поспешил как обычно Вот вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#! /usr/bin/env python3.2
# coding: utf-8
 
file1 = []
file2 = []
 
with open('t_1.txt') as t1, open('t_2.txt') as t2:
    for x in t1:
        file1.append(x.split())
    for y in t2:
        file2.append(y.split())
 
print(file1)
print(file2)
0
2739 / 2342 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
06.04.2014, 12:24 11
ivsatel, Ваш код не будет делать, то что нужно Kronos0041. Если уж пошла пьянка с with, то тогда нужно вот так вот делать:
Python
1
2
3
4
5
6
with open('file1') as f1, open('file2') as f2:
    file1 = f1.read().split('\n')
    file2 = f2.read().split('\n')[1:-1]
 
print(file1)
print(file2)
2
2 / 2 / 1
Регистрация: 18.03.2014
Сообщений: 147
06.04.2014, 15:07  [ТС] 12
а без списков здесь никак не получится? я вот подумал вариант с типом boolean, но уж очень все сложно получается + много ошибок
0
2739 / 2342 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
06.04.2014, 15:21 13
Цитата Сообщение от Kronos0041 Посмотреть сообщение
а без списков здесь никак не получится?
А зачем!?
0
2 / 2 / 1
Регистрация: 18.03.2014
Сообщений: 147
06.04.2014, 15:59  [ТС] 14
со списками работу не принимают...
0
2739 / 2342 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
06.04.2014, 16:00 15
Что препод сказал, какие нарекания?
0
2 / 2 / 1
Регистрация: 18.03.2014
Сообщений: 147
06.04.2014, 16:12  [ТС] 16
чтобы все файлы были закрыты
Python
1
2
file1 = f1.read().split('\n')
file2 = f2.read().split('\n')[1:-1]
и нельзя использовать списки то есть redlines и все в этом роде, тоесть работа со строками, без созданий списков

Добавлено через 1 минуту
Дан входной текстовый файл. Разделить его на четные и нечетные строки в два выходных файла.

input.txt

111

222

333

44



output1.txt

111

333

output2.txt

222

44

еще вот такое задание - здесь тоже нельзя использовать списки

Добавлено через 1 минуту
Цитата Сообщение от Kronos0041 Посмотреть сообщение
не применяя строк
кажется я попутал) должно быть не применяя список
0
2739 / 2342 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
06.04.2014, 16:36 17
Kronos0041, что вы проходили? Что он хочет, чтобы ты использовал?
0
2 / 2 / 1
Регистрация: 18.03.2014
Сообщений: 147
06.04.2014, 17:01  [ТС] 18
Флаги, циклы и true или false
0
2739 / 2342 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
06.04.2014, 17:50 19
Лучший ответ Сообщение было отмечено Kronos0041 как решение

Решение

Цитата Сообщение от Kronos0041 Посмотреть сообщение
Флаги,
О чём это ты?

Без использования списков.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
file2 = open('file2')
data_f2 = file2.read()
file2.close()
 
start = data_f2.find('\n') + 1
end = data_f2.rfind('\n')
data_f2 = data_f2[start: end]
 
file2 = open('file2', 'w')
for i in data_f2:
    file2.write(i)
 
 
file1 = open('file1')
data_f1 = file1.read()
file1.close()
 
result = data_f2 + '\n' + data_f1
 
file1 = open('file1', 'w')
for i in result:
    file1.write(i)
 
file1.close()
1
2 / 2 / 1
Регистрация: 18.03.2014
Сообщений: 147
07.04.2014, 14:32  [ТС] 20
Цитата Сообщение от tsar925 Посмотреть сообщение
start = data_f2.find('\n') + 1
end = data_f2.rfind('\n')
можешь пояснить что делают find()? просто если один вывести на экран то будет 4, а другой будет возростать если добавить строки в исходный файл?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2014, 14:32
Помогаю со студенческими работами здесь

Даны два текстовых файла. Добавить в начало первого файла содержимое второго файла
Даны два текстовых файла. Добавить в начало первого файла содержимое второго файла.

Даны два текстовых файла. Добавить в начало первого файла содержимое второго файла
Даны два текстовых файла. Добавить в начало первого файла содержимое второго файла

Даны 2 файла чисел. Записать в третий файл такие элементы первого файла, которых нет во втором.
Даны 2 файла чисел. Записать в третий файл такие элементы первого файла, которых нет во втором.

Дан тестовый файл, нужно удалить из него первую/последнюю строку
Доброго времени суток) Помогите, пожалуйста найти ошибку. моя задача: дан тестовый файл, удалить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru