Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python';什么是写方法?_Python - Fatal编程技术网

使用Python';什么是写方法?

使用Python';什么是写方法?,python,Python,很抱歉,如果标题没有意义,我的头衔很差 如果argv[2]==pram[2]: 代码: 从加密密码导入AES 从base64导入B64编码,B64解码 键='G$xUHGGPF#abfg&9' 类密码: 定义初始值(self,salt='SlTKeYOpHygTYkP3'): self.salt=盐 self.enc_dec_方法='utf-8' def加密(自身、str_至_enc、str_密钥): 尝试: aes_obj=aes.new(str_键,aes.MODE_循环流化床,self.s

很抱歉,如果标题没有意义,我的头衔很差

如果argv[2]==pram[2]:

代码:

从加密密码导入AES
从base64导入B64编码,B64解码
键='G$xUHGGPF#abfg&9'
类密码:
定义初始值(self,salt='SlTKeYOpHygTYkP3'):
self.salt=盐
self.enc_dec_方法='utf-8'
def加密(自身、str_至_enc、str_密钥):
尝试:
aes_obj=aes.new(str_键,aes.MODE_循环流化床,self.salt)
hx_enc=aes_obj.encrypt(str_to_enc)
mret=B64编码(hx_enc).解码(self.enc_dec_方法)
返回mret
除:
通过
def decrypt(self、enc_str、str_key):
尝试:
aes_obj=aes.new(str_键,aes.MODE_循环流化床,self.salt)
str_tmp=b64解码(enc_str.encode(self.enc_dec_方法))
str_dec=aes_obj.decrypt(str_tmp)
mret=str_dec.dec解码(自加密dec_方法)
返回mret
除:
通过
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
从系统导入argv中退出
从pathlib导入路径
crypt=crypt()
婴儿车=[“-e”、“-d”、“-ef”、“-df”]
尝试:
如果len(argv[1:])>2或len(argv[1:])==0或(len(argv)==3且不在婴儿车[2:]):
引发异常
如果argv[1]不在婴儿车中:
引发异常
如果(婴儿车中的argv[1][2:])和len(argv[1:])==1:
引发异常
婴儿车[2:]中的elif argv[1]:
如果不是,则路径(argv[2])是_文件():
raise FileNotFoundError
如果argv[1]==pram[0]:
打印(crypt.encrypt(str(输入('encrypt>')),密钥))
如果argv[1]==pram[1]:
打印(crypt.decrypt(str(输入('decrypt>')),密钥))
##########
#从这里
##########
如果argv[1]==pram[2]:
尝试:
使用open(argv[2],'r+',将='utf-8'编码为f:
for_test=f.readlines()
打印([\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
enc=[crypt.encrypt(u.replace('\n',''),KEY)+'\n'代表u-in代表u-test]
enc[-1]=enc[-1].rstrip('\n')
f、 截断(0)
对于范围内的(len(enc)):
f、 写入(enc[3;])
打印(enc)
如果enc!=无:
打印(f{argv[2]}现在已加密。)
除:
提升
如果argv[1]==pram[3]:
尝试:
使用open(argv[2],'r+',将='utf-8'编码为f:
enc=[crypt.decrypt(u.replace('\n',''),KEY)+'\n'表示f.readlines()中的u]
enc[-1]=enc[-1].rstrip('\n')
如果有([如果无,则为enc中的为真]:
打印('解密失败!')
出口(0)
f、 截断(0)
对于范围内的(len(enc)):
f、 写入(enc[3;])
打印(enc)
如果enc!=无:
打印(f'{argv[2]}现在已解密。“)
除:
打印('解密失败!')
##########
#直到这里
##########
除FileNotFoundError外:
打印('不存在此类文件或目录')
例外情况除外,如e:
打印(“”提供的参数不正确:
-e、 -d;-ef;-df“”)
在这里,每次我使用-xf参数运行上面的脚本时,它都会加密并解密文件,但它会在文件的第一行中不断添加空格或一些不可见的字符, 请参考下文-

Let the file be test.txt with these 3 lines-
#Before using the script, In notepad:
sagar
manish
deepak
####################################

$ D:\> python .\crypt.py -ef .\test.txt
['sagar', 'manish', 'deepak']
['JLGSPlA=\n', 'OkR3fipr\n', 'M+wzlave']
.\test.txt is now encrypted.

#Now, In Notepad:
                     JLGSPlA=
OkR3fipr
M+wzlave
####################################

D:\> python .\crypt.py -df .\test.txt
['sagar\n', 'manish\n', 'deepak']
.\test.txt is now decrypted.

#Now, In Notepad:
                                                 sagar
manish
deepak
####################################

D:\> python .\crypt.py -ef .\test.txt
['\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00sagar', 'manish', 'deepak']
['V6cCTqkeReagrMBO1ygXclSKS4O16BF1pjWetDNEiwth/wY5f/Hj7UPew8bJKPLNInFsDIVn\n', 'OkR3fipr\n', 'M+wzlave']
.\test.txt is now encrypted.

#Now, In Notepad:
                                                                      V6cCTqkeReagrMBO1ygXclSKS4O16BF1pjWetDNEiwth/wY5f/Hj7UPew8bJKPLNInFsDIVn
OkR3fipr
M+wzlave
####################################

D:\> python .\crypt.py -df .\test.txt
['\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00sagar\n', 'manish\n', 'deepak']
.\test.txt is now decrypted.

#In Notepad
                                                                                                                                                                                                                   sagar
manish
deepak
####################################

为什么会这样,这是我第一次经历这样的事情。任何帮助都将不胜感激。

.truncate(0)
删除文件的现有内容-但它显然不会更改您在文件中的位置,该位置仍然位于原始数据的末尾。写入文件末尾以外的位置将用空值填充缺少的区域。在那里添加一个
.seek(0)
以移回文件的开头。非常感谢,我不知道
.seek(0)
。这与您的问题无关,但是
如果有([True for u.in enc if u.is None]):
在做什么?那enc[\u]呢?此外,导入应该放在文件的顶部。@AlexanderCécile,我使用了
any([True for u.in enc if u.is None]):
检查解密是否失败,主要是因为当您在未加密的文件上运行此脚本时,它返回
None
。所以这里我只是检查文件中是否有未加密的行,这样我就可以停止脚本了。@Sagar啊,我知道发生了什么。我感到困惑,因为按照惯例,一个名为
的变量表示它没有被使用。你在做完全相反的事情。