Как переименовать файлы и изменить тип файла? - PullRequest
3 голосов
/ 17 ноября 2011

У меня есть список с .dbf файлами, которые я хочу изменить на .csv файлы.Я открываю их вручную в Excel и заново сохраняю как .csv, но это занимает слишком много времени.

Теперь я создал скрипт, который меняет имя файла, но когда я его открываю, он все еще.dbf тип файла (хотя он называется .csv).Как я могу переименовать файлы таким образом, чтобы тип файла также менялся?

Мой сценарий использует (имена файлов dbf и csv перечислены в отдельном файле csv):

IN = dbffile name
OUT = csvfile name

for output_line in lstRename:
    shutil.copyfile(IN,OUT)

Ответы [ 6 ]

6 голосов
/ 18 ноября 2011

Изменение имени файла (а расширение является лишь частью полного имени) абсолютно не влияет на содержимое файла.Вам нужно как-то преобразовать содержимое из одного формата в другой.

Используя мой модуль dbf и python , это довольно просто:

import dbf

IN = 'some_file.dbf'
OUT = 'new_name.csv'

dbf.Table(IN).export(filename=OUT)

Это создаст .csv файл, который на самом деле в формате CSV.

2 голосов
/ 18 ноября 2011

Если вы когда-либо использовали VB или просматривали VBA, вы можете написать простой скрипт Excel, чтобы открыть каждый файл, сохранить его как csv, а затем сохранить его под новым именем.

Используйте средство записи макросов длязапишите, как вы делали это самостоятельно, а затем отредактировали полученный скрипт.

Теперь я создал приложение, которое автоматизирует это.Он называется xlsto (ищите файл выпуска xls.exe).Это позволяет вам выбрать папку и конвертировать все файлы xls в csv (или любой другой тип).

0 голосов
/ 18 июля 2013

descargar libreria dbfpy desde http://sourceforge.net/projects/dbfpy/?source=dlp

import csv,glob
from dbfpy import dbf

entrada = raw_input(" entresucarpetadbf ::")


lisDbf = glob.glob(entrada + "\\*dbf")
for db in lisDbf:
    print db
    try:
        dbfFile = dbf.Dbf(open(db,'r'))
        csvFile = csv.writer(open(db[:-3] + "csv", 'wb'))

        headers = range(len(dbfFile.fieldNames))

        allRows = []
        for row in dbfFile:
            rows = []
            for num in headers:
                rows.append(row[num])
            allRows.append(rows)

        csvFile.writerow(dbfFile.fieldNames)
        for row in allRows:
            print row
            csvFile.writerow(row)

    except Exception,e:
        print e
0 голосов
/ 25 февраля 2013

Это зависит от того, что вы хотите сделать.Кажется, вы хотите конвертировать файлы в другие типы.Существует много конвертеров, но один компьютер не знает каждый тип файла.Для этого вам нужно будет скачать программное обеспечение.Если все, что вам нужно, это изменить расширение файла (например, .png, .doc, .wav), то вы можете настроить свой компьютер так, чтобы он мог изменять как имя, так и расширение.Я надеялся, что помог каким-то образом:)

0 голосов
/ 17 ноября 2011

Возможно, новое имя файла - "xzy.csv.dbf".Обычно в C # я ставлю кавычки в имени файла.Это заставляет ОС менять имя файла.Попробуйте что-то вроде "Xzy.csv" в кавычках.

0 голосов
/ 17 ноября 2011

Вам нужен конвертер

Поиск dbf2csv в Google.

...