Renomeando arquivos não GIS através do QGIS?


8

Tenho milhares de PDFs que têm nomes sem sentido e estão espalhados por várias pastas. Eu preciso renomeá-los e, felizmente, a maioria deles é referenciada através de links em camadas espaciais, onde as tabelas de atributos têm informações significativas sobre os arquivos e uma coluna chamada 'hotlinks' possui um caminho de diretório apontando para os PDFs.

Existe um método no QGIS que pode seguir os caminhos nas tabelas de atributos e renomear os PDFs nesse caminho com base nos atributos da camada? Vou ter um novo campo que contém o novo nome, por exemplo. concat ("Campo1", "Campo2", "Campo3"), então eu gostaria de renomear os PDFs com base nisso.

O problema ... os PDFs estão espalhados e não estão na mesma pasta; portanto, o script não pode apenas apontar para uma pasta.


os nomes sem sentido dos PDFs existem nos atributos dos arquivos de formas ou estão no mesmo caminho dos PDFs?
— Shiko

Os nomes sem sentido existem nos atributos, no final do link do diretório no campo link. Por exemplo. c: \ folder \ 123456.pdf
— Bill

por isso, se você tem a fonte (sem sentido) e de destino (significativa) no mesmo registro, então você pode tentar a minha resposta abaixo
— Shiko

Respostas:


15

Você tem 2 opções:

1) Usando a biblioteca PyQGIS + OS: [É necessário executar o QGIS como administrador para renomear arquivos]

import os #needed to replace filenames
layer = iface.activeLayer() #get selected layer
selection = layer.selectedFeatures()
iface.activeLayer().selectAll()
for feature in selection:    
    if os.path.exists(feature['source']):
        os.rename(feature['source'], feature['target']) #rename files

2) Usando a biblioteca externa Python +:
Use a biblioteca abaixo para ler o arquivo dbf + import os library:

import os #needed to replace filenames
from dbfread import DBF #read dbf file
for record in DBF('MyFile.dbf'):
   if os.path.exists(record['source']):
      os.rename(record['Source'], record['target'])

Referência:
https://pypi.python.org/pypi/dbfread


Obrigado por isso. Porém, não estou tendo muita sorte ... se eu tiver isso no console Python e executar o comando, ele deverá alterar os pdfs mencionados nos registros do shapefile de c: /meaningless1.pdf para c: /meaningful1.pdf etc. ? Um dos meus shapefiles também pode ter centenas de links em pdf. Desculpe, eu sou um pouco de um python noob.
— Bill

Também estou executando isso no console: Console Python Use iface para acessar a interface da API QGIS ou Digite help (iface) para obter mais informações layer = iface.activeLayer () selection = layer.selectedFeatures () para o recurso na seleção: os.rename (feature ['source'], feature ['target'])
— Bill

@ Bill no PyQGIS, você pode inserir seu código completo no Editor e executá-lo em vez de escrever linha por linha no console
— Shiko

Obrigado. Ainda sem sorte, o script grava um arquivo python na minha pasta temp c: \ users ..... temp, mas não renomeia os pdfs. Eu tenho o campo sem sentido como 'origem' e o campo significativo como 'destino', os nomes dos campos seriam a causa? Cheers
— Bill

@ Bill Você pode tentar abrir o QGIS como 'Administrador'? Você recebeu algum erro?
— Shiko 21/02
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.