Đổi tên các tệp không phải là GIS thông qua QGIS?


8

Tôi có hàng ngàn pdf có tên vô nghĩa và nằm rải rác trên một số thư mục. Tôi cần đổi tên chúng, và may mắn thay, hầu hết chúng được tham chiếu thông qua các liên kết trong các lớp không gian, trong đó các bảng thuộc tính có thông tin có ý nghĩa về các tệp và một cột có tên là 'hotlinks' có đường dẫn thư mục trỏ đến pdf.

Có một phương thức nào trong QGIS có thể đi theo các đường dẫn trong các bảng thuộc tính và đổi tên pdf trong đường dẫn đó dựa trên các thuộc tính trong lớp không? Tôi sẽ có một trường mới chứa tên mới, vd. concat ("Field1", "Field2", "Field3"), vì vậy tôi muốn đổi tên pdf dựa trên đó.

Việc bắt ... các tệp pdf nằm rải rác xung quanh và không nằm trong cùng một thư mục, vì vậy tập lệnh không thể chỉ vào một thư mục.


các tên PDF vô nghĩa có tồn tại trong các thuộc tính của tệp hình dạng hoặc tệp hình dạng nằm trong cùng một đường dẫn của tệp PDF không?
Shiko

Các tên vô nghĩa tồn tại trong các thuộc tính, ở cuối liên kết thư mục trong trường liên kết. Ví dụ. c: \ thư mục \ 123456.pdf
Bill

vì vậy nếu bạn có nguồn (vô nghĩa) và mục tiêu (có ý nghĩa) trong cùng một bản ghi, thì bạn có thể thử câu trả lời của tôi dưới đây
Shiko

Câu trả lời:


15

Bạn có 2 lựa chọn:

1) Sử dụng thư viện PyQGIS + OS: [Phải chạy QGIS với tư cách Quản trị viên để đổi tên tệp]

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) Sử dụng Python + thư viện bên ngoài:
Sử dụng thư viện bên dưới để đọc tệp dbf + nhập thư viện os :

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'])

Tham khảo:
https://pypi.python.org/pypi/dbfread


Cảm ơn vì điều đó. Tôi không gặp nhiều may mắn mặc dù ... nếu tôi có cái này trong bảng điều khiển Python và chạy lệnh, nó sẽ thay đổi bất kỳ pdf nào được tham chiếu trong các bản ghi shapefile từ c: /meaningless1.pdf thành c: /meaningful1.pdf, v.v. ? Một trong những shapefiles của tôi cũng có thể có hàng trăm liên kết pdf. Xin lỗi, tôi là một chút của một con trăn noob.
Bill

Ngoài ra, tôi đang chạy ứng dụng này trong bảng điều khiển: Bảng điều khiển Python Sử dụng iface để truy cập giao diện API QGIS hoặc Loại trợ giúp (iface) để biết thêm thông tin lớp = iface.activeLayer () select = layer.selectedFeatures () cho tính năng trong lựa chọn: os.rename (tính năng [ 'nguồn'], tính năng [ 'mục tiêu'])
Bill

@Bill trong PyQGIS, bạn có thể nhập mã hoàn chỉnh của mình vào Trình chỉnh sửa và chạy nó thay vì viết từng dòng trong bảng điều khiển
Shiko

Cảm ơn. Mặc dù vậy, vẫn không gặp may, tập lệnh ghi tệp python vào thư mục c: \ users ..... temp của tôi, nhưng không đổi tên tệp pdf. Tôi có trường vô nghĩa dưới dạng 'nguồn' và trường có ý nghĩa dưới dạng 'mục tiêu', tên trường có phải là nguyên nhân không? Chúc mừng
Bill

@Bill Bạn có thể thử mở QGIS với tư cách là 'Quản trị viên' không? Bạn có nhận được bất kỳ lỗi?
Shiko
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.