我正在阅读有关NTFS属性类型的信息,它会进入$ FILE_NAME属性结构。这是:
# from threading import Thread
from time import sleep
no_one = True
battledic = {} # your dict here. It may be better to use a list of objects (classes) for your opponents
class Battle(object):
def __init__(self, chat_id):
self.chat_id = chat_id
self.pcount = 0
self.p1score = 0
self.p2score = 0
print('Instance of battle started on chat %s' % self.chat_id)
def reset(self):
self.pcount = 0
self.p1score = 0
self.p2score = 0
def wheres_waldo():
x = 0; no_one = True
while x < 90: # waits 90 seconds unless found
for player in battledic.keys():
if player.is_requesting: # found someone
no_one = False
break # quit looking
else:
print('No one yet')
sleep(1); x+= 1
if no_one:
sendmessage(chat_id, 'no one accepted') # first parameter is the chat address and the second one is the message
battle.reset()
else:
sendmessage(chat_id, 'Found someone')
def sendmessage(chat_id,message):
print('%s on chat %s' % (message,chat_id))
battle = Battle(chat_id)
while True:
message = raw_input('Command? ')
if message == "challenge":
if battle.pcount == 0:
wheres_waldo()
# first thoughts were to run threads but the while loop is easier
# wait = Thread(target=timeout, args=(chat_id))
# where = Thread(target=wheres_waldo)
# wait.start();where.start()
# wait.join();where.join()
什么是&#34;文件名命名空间&#34;在偏移量0x41?我认为我对命名空间有点了解。如何只用1个字节存储?任何人都可以为我清除这个吗?谢谢。
答案 0 :(得分:4)
它描述了文件名的“特征”,即长度,允许的字符等。它本身不是“字符串”(如C ++ / C#/ etc。命名空间)。
我找到了一份文件here,我坦率地不知道它的有效性。
但无论如何,它描述了名称空间(这很明显,见第13.2章。):
0:POSIX
这是最大的命名空间。它区分大小写 允许除NULL(0)和Forward Slash之外的所有Unicode字符 '/'。最大名称长度为255个字符。注:有一些 字符,例如冒号':',在NTFS中有效,但Windows会 不允许你使用。
1:Win32
Win32是POSIX的子集 命名空间并且不区分大小写。它使用所有Unicode字符, 除了:''''*''/'':''&lt;' '&GT;' '?' '\''|' N.B.姓名不能以 点'。'或空格''。
2:DOS
DOS是Win32命名空间的子集, 只允许8位大写字符,大于空格''和 排除:''''*''+'',''/'':'';' '&LT;' '=''&gt;' '?' '\'.N.B。姓名 必须匹配以下模式:1到8个字符,然后是“。”,然后是1 到3个字符。
3:Win32&amp; DOS
这个命名空间意味着两者都有 Win32和DOS文件名是相同的,因此已保存在 这个单一的文件名记录。
因此该字段可以是一个字节,因为它只包含一个标识正在使用的相应名称空间的数字。