Как скопировать файловый объект в Python

Я открываю файл на Python, используя команду, указанную ниже. Затем я копирую объект в w.

import os

os.chdir(r"C:\Users\")

with open(r"abc.040", 'r+') as k:
    w = k

for a in w:
    print(a)

Но когда я пытаюсь перебрать объект w через цикл for, я получаю ошибку ниже.

Traceback (most recent call last):
  File "C:/Users/w.py", line 8, in <module>
    for a in w:
ValueError: I/O operation on closed file.

Как скопировать экземпляр файла

Сама ошибка не требует пояснений.

Abdul Niyas P M 07.08.2018 09:26

Отступы такие же, как здесь?

Sayse 07.08.2018 09:27

@ a_python_user Вы правы, но я хочу сделать копию и использовать эту копию. Что-то вроде deepcopy.

Kandan Siva 07.08.2018 09:27

@ Sayse да отступы такие же, как я показал здесь

Kandan Siva 07.08.2018 09:29

В отличие от некоторых других языков Python создает ссылки с помощью =, а не копий. Таким образом, вы все еще используете тот же объект только под новым именем.

Klaus D. 07.08.2018 09:31

Когда вы открываете файл в блоке with, файл автоматически закрывается при выходе из блока. kw, это всего лишь два имени для одного и того же файлового объекта) закрывается при достижении цикла for.

Thierry Lathuille 07.08.2018 09:32
w = k не является копией.
juanpa.arrivillaga 07.08.2018 09:59

@ juanpa.arrivillaga тогда как скопировать

Kandan Siva 07.08.2018 11:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
8
859
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте readlines

Бывший:

import os

os.chdir(r"C:\Users")
with open(r"abc.040", 'r+') as k:
    w = k.readlines()

for a in w:
    print(a)

Разве нельзя скопировать объект и использовать его. Что-то вроде deepcopy

Kandan Siva 07.08.2018 09:28

содержимое файла копируется на w с использованием «строк чтения» для повторного использования.

Rakesh 07.08.2018 09:32

Другие вопросы по теме