如何在运行代码的python.py中输入文件

如何在运行代码的python.py中输入文件,python,Python,这段代码假设是对一个随机文件进行解密和加密,但我不知道如何输入它 import array import hashlib import random from Crypto.Cipher import Blowfish MH3G_JP = 0 MH3G_NA = 1 MH3G_EU = 2 MH4_JP = 3 MH4_NA = 4 MH4_EU = 5 MH4G_JP = 6 MH4G_NA = 7 MH4G_EU = 8 class SavedataCipher: def __in

这段代码假设是对一个随机文件进行解密和加密,但我不知道如何输入它

import array
import hashlib
import random

from Crypto.Cipher import Blowfish


MH3G_JP = 0
MH3G_NA = 1
MH3G_EU = 2
MH4_JP = 3
MH4_NA = 4
MH4_EU = 5
MH4G_JP = 6
MH4G_NA = 7
MH4G_EU = 8


class SavedataCipher:
def __init__(self, game):
    if game in (MH4G_JP, MH4G_NA, MH4G_EU):
        self._cipher = Blowfish.new(b'blowfish key
iorajegqmrna4itjeangmb agmwgtobjteowhv9mope')
    else:
        raise ValueError('Ivalid game selected.')

def _xor(self, buff, key):
    buff = array.array('H', buff)
    for i in range(len(buff)):
        if key == 0:
            key = 1
        key = key * 0xb0 % 0xff53
        buff[i] ^= key
    return buff.tostring()
def encrypt(self, buff):
    csum = sum(buff) & 0xffffffff
    buff = array.array('I', buff)
    buff.insert(0, csum)
    seed = random.getrandbits(16)
    buff = array.array('I', self._xor(buff.tostring(), seed))
    buff.insert(0, (seed << 16) + 0x10)
    buff.byteswap()
    buff = array.array('I', self._cipher.encrypt(buff.tostring()))
    buff.byteswap()
    return buff.tostring()

def decrypt(self, buff):
    buff = array.array('I', buff)
    buff.byteswap()
    buff = array.array('I', self._cipher.decrypt(buff.tostring()))
    buff.byteswap()
    seed = buff.pop(0) >> 16
    buff = array.array('I', self._xor(buff.tostring(), seed))
    csum = buff.pop(0)
    buff = buff.tostring()
    if csum != (sum(buff) & 0xffffffff):
        raise ValueError('Invalid checksum in header.')
    return buff

def encrypt_file(self, savedata_file, out_file):
    savedata = open(savedata_file, 'rb').read()
    savedata = self.encrypt(savedata)
    open(out_file, 'wb').write(savedata)

def decrypt_file(self, savedata_file, out_file):
    savedata = open(savedata_file, 'rb').read()
    savedata = self.decrypt(savedata)
    open(out_file, 'wb').write(savedata)
导入数组
导入hashlib
随机输入
来自Crypto.Cipher导入河豚
MH3G_JP=0
MH3G_NA=1
MH3G_EU=2
MH4_JP=3
MH4_NA=4
MH4_EU=5
MH4G_JP=6
MH4G_NA=7
MH4G_EU=8
类SavedataCipher:
定义初始(自我,游戏):
如果游戏进入(MH4G_JP、MH4G_NA、MH4G_EU):
self.\u cipher=Blowfish.new(b'Blowfish密钥
iorajegqmrna4itjeangmb agmwgtobjteowv9mope')
其他:
提升值错误('已选择Ivalid游戏')
定义异或(自身、增益、键):
buff=array.array('H',buff)
对于范围内的i(len(buff)):
如果键==0:
键=1
key=key*0xb0%0xff53
buff[i]^=键
返回buff.tostring()
def加密(自身,buff):
csum=总和(buff)&0xffffffff
buff=array.array('I',buff)
buff.插入(0,csum)
seed=random.getrandbits(16)
buff=array.array('I',self.\uxor(buff.tostring(),seed))
buff.插入(0,(种子>16
buff=array.array('I',self.\uxor(buff.tostring(),seed))
csum=buff.pop(0)
buff=buff.tostring()
如果csum!=(总和(buff)&0xffffffff):
raise VALUERROR('标头中的校验和无效')
返回buff
def加密_文件(self、savedata_文件、out_文件):
savedata=open(savedata_文件'rb')。read()
savedata=self.encrypt(savedata)
打开(输出文件“wb”)。写入(保存数据)
def decrypt_文件(self、savedata_文件、out_文件):
savedata=open(savedata_文件'rb')。read()
savedata=self.decrypt(savedata)
打开(输出文件“wb”)。写入(保存数据)

此代码是一个类,您应该创建一个调用此调用的函数。您可以在同一文件中执行此操作,也可以在其他文件中执行此操作并导入该类

if __name__ == "__main__":
    cipher = SavedataCipher(MH4G_JP) # or use different parameter
    # do something else

不清楚您的问题是什么。您正在询问如何使用
open(filename)
函数?