Skip to main content

Python - Need help renaming all pdf in a folder based on 2 criteria

I am very new to programing, and I am trying to strengthen my Python skills via unique problems I find at my job. Currently, I have a program that is exporting PDFs from a remote desktop and it is automatically lowercasing all of the letters in the filename. We use two different item code formats, so I need to come up with a way to rename them all at once so that I can run a script periodically to fix this issue and gain my sanity back. I will provide examples of what I have, and what I want to convert the names to below:

Materials 4000a example material test 4000A Example Material Test

Finished Products

test-2000a-tp-a example finished product TEST-2000A-TP-A Example Finished Product

I am not sure how to best do this, but you can see exactly which positions I want to capitalize based on these formats. The materials one should be easier, the finished product one will take a little more creativity probably. I have looked around on here, Github, and a few other places...and I like this framework from GitHub but I can't figure out how to write the code for the renaming of the above examples. I have both types in the same folder, so I would like to have a script that does both and uses the try/except, and the confirmation of change so that I can prevent mistakes and learn to write better code.

Here is the code that I have now, with the section I need help on shown in comments:

import os

folder = '/Dev/Test_Rename_PDF'

for fileName in os.listdir('.'):
    try:
        # Find all PDF (all of them are, but I wanted a more diverse script for future uses)
        if fileName.lower()[-3:] != "pdf":
            continue
        print("Processing " + fileName)
        
        # Uppercase based on the two conditions I provided above.
        # (NEED HELP HERE)

        # Ask user for confirmation to change
        option = raw_input("Do you want to rename '" + fileName + "'' to '" + newName + "'? [y][n]: ")
        option = option.lower()

        # Change if approved
        if(option.startswith('y')):
            os.rename(fileName, newName)

    except:
        print("Error in processing: " + fileName)

I'm trying my best to learn by doing with Python right now, and I know I probably have other mistakes, but I am doing my best and taking online classes as I have time. I appreciate your time!



source https://stackoverflow.com/questions/75881692/python-need-help-renaming-all-pdf-in-a-folder-based-on-2-criteria

Comments

Popular posts from this blog

ValueError: X has 10 features, but LinearRegression is expecting 1 features as input

So, I am trying to predict the model but its throwing error like it has 10 features but it expacts only 1. So I am confused can anyone help me with it? more importantly its not working for me when my friend runs it. It works perfectly fine dose anyone know the reason about it? cv = KFold(n_splits = 10) all_loss = [] for i in range(9): # 1st for loop over polynomial orders poly_order = i X_train = make_polynomial(x, poly_order) loss_at_order = [] # initiate a set to collect loss for CV for train_index, test_index in cv.split(X_train): print('TRAIN:', train_index, 'TEST:', test_index) X_train_cv, X_test_cv = X_train[train_index], X_test[test_index] t_train_cv, t_test_cv = t[train_index], t[test_index] reg.fit(X_train_cv, t_train_cv) loss_at_order.append(np.mean((t_test_cv - reg.predict(X_test_cv))**2)) # collect loss at fold all_loss.append(np.mean(loss_at_order)) # collect loss at order plt.plot(np.log(al...

Sorting large arrays of big numeric stings

I was solving bigSorting() problem from hackerrank: Consider an array of numeric strings where each string is a positive number with anywhere from to digits. Sort the array's elements in non-decreasing, or ascending order of their integer values and return the sorted array. I know it works as follows: def bigSorting(unsorted): return sorted(unsorted, key=int) But I didnt guess this approach earlier. Initially I tried below: def bigSorting(unsorted): int_unsorted = [int(i) for i in unsorted] int_sorted = sorted(int_unsorted) return [str(i) for i in int_sorted] However, for some of the test cases, it was showing time limit exceeded. Why is it so? PS: I dont know exactly what those test cases were as hacker rank does not reveal all test cases. source https://stackoverflow.com/questions/73007397/sorting-large-arrays-of-big-numeric-stings

How to load Javascript with imported modules?

I am trying to import modules from tensorflowjs, and below is my code. test.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title </head> <body> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.0.0/dist/tf.min.js"></script> <script type="module" src="./test.js"></script> </body> </html> test.js import * as tf from "./node_modules/@tensorflow/tfjs"; import {loadGraphModel} from "./node_modules/@tensorflow/tfjs-converter"; const MODEL_URL = './model.json'; const model = await loadGraphModel(MODEL_URL); const cat = document.getElementById('cat'); model.execute(tf.browser.fromPixels(cat)); Besides, I run the server using python -m http.server in my command prompt(Windows 10), and this is the error prompt in the console log of my browser: Failed to loa...