Переименование локального абсолютного пути к файлу в простой программе и загрузка в github, чтобы никто не знал мои каталоги и имеет ли это значение?

Я начал использовать GitHub для отображения очень простых программ. https://github.com/MasonMcGerry

Я хочу загрузить более простые программы, но многие из них имеют полные и абсолютные пути к каталогам и файлам, которые я использую в программах.

Я не хочу выкладывать это в Интернете, потому что это кажется небезопасным, но, возможно, это не имеет значения.

Я думал создать новый клон проектов, а затем изменить пути на что-то выдуманное, например / path / to / this / file. Похоже, это займет намного больше времени, и у меня возникнут проблемы с отладкой, потому что я буду программировать на своем локальном хосте с абсолютными путями к файлам, тестировать их, а затем переписывать пути к файлам для готовой / безопасной версии GitHub.

И рабочая версия на моем локальном хосте, и клон будут на моем компьютере, но только клон будет иметь файл .git в своем каталоге.

Ниже приведен пример простой программы с измененным путем к файлу.

# for converting tag types to another platforms design

# filepath
fp = '/Users/username/Desktop/Projects/Programs/tagConverter/'

IG = ['IG','ig','instagram','Instagram']
YT = ['YT','yt','youtube','Youtube','Youtube']
end = ['end','END','End','stop','STOP','Stop']
runState = True
# Instagram
def convIG():
    # takes convTxt.txt file, strips out commas and puts each item into array
    # line by line writes into convIG.txt
    # open up file /Users/username/Downloads/tagConverter/convTxt.txt
    # and read it
    f = open(fp + 'convTxt.txt','r')
    inconvIG = f.read()
    outconvIG = '#'+("#").join(inconvIG[0:].split(','))
    g = open(fp + 'convIG.txt','w')
    g.write(outconvIG.replace(' ',''))
    g.close()
    f.close()

# YouTube
"""
will need ML to separate recognizable words with spaces like NLP
other Instagram tags like '#Howto#DIY' will become CSV howto,diy
instead of the preferred 'How to, DIY'
probably will use 'in' operator to help recognize and separate words
i.e.
s = '#howto'
x = ''
if 'how' in s:
    x += 'how '
if 'to' in s:
    x += 'to '
print(x)
x == 'how to '
"""
def convYT():
    # takes convTxt.txt file, strips out # and puts each item into array
    # line by line writes into convYT.txt
    # open up file /Users/username/Downloads/tagConverter/convTxt.txt
    # and read it
    f = open(fp + 'convTxt.txt','r')
    inconvYT = f.read()
    outconvYT = (",").join(inconvYT[0:].split('#'))
    g = open(fp + 'convYT.txt','w')
    g.write(outconvYT)
    g.close()
    f.close()
    
def prompt():
    global runState
    prompt = input("Which Tag Type would you like to convert to?\n")
    if prompt in IG:
        convIG()
    elif prompt in YT:
        convYT()
    elif prompt in end:
        runState = False
    else:
        print('fail')
        
     
# indefinite loop, enter an end word listed in 'end' list
while runState == True:
    prompt()



"""
SOURCES:
https://stackoverflow.com/questions/2783969/compare-string-with-all-values-in-array
https://stackoverflow.com/questions/18132912/checking-if-a-value-is-equal-to-any-value-in-an-array
https://stackoverflow.com/questions/29101836/typeerror-function-object-is-not-subscriptable-python
Reuben Young colleague and friend
https://www.journaldev.com/23763/python-remove-spaces-from-string
https://www.programiz.com/python-programming/global-keyword
https://help.instagram.com/351460621611097

https://www.w3schools.com/python/gloss_python_global_variables.asp
https://beginnersbook.com/2019/03/python-any-function/
https://www.programiz.com/python-programming/list-comprehension

"""

Я понимаю, что этот код довольно прост, но некоторые из них будут усложняться по мере продвижения, и это будет неудобно.

Есть ли обходной путь, и я параноик или неправильно понимаю / использую эту технологию (git / github)?


person Mason McGerry    schedule 27.08.2020    source источник


Ответы (1)


Вы правы, что не хотите раскрывать свою локальную файловую систему. Любой жестко запрограммированный путь всегда должен быть относительным, чтобы не дать потенциальным злоумышленникам понять, как устроена ваша машина. Исключением являются системные каталоги по умолчанию, такие как C://Progam Files, где все машины Windows хранят данные определенного типа.

Лучшим решением здесь было бы перенести эти файлы в проект в какой-нибудь resources каталог и получить к ним доступ прямо оттуда. Вы также можете проанализировать файл конфигурации, в котором будет указано, где искать эти файлы. Например,

tagConverterPath = "/Users/username/Desktop/Projects/Programs/tagConverter/"

Конечно, вам нужно будет добавить файл конфигурации в .gitignore, и каждый пользователь должен будет определить свой собственный, если вы не предоставите для них файл конфигурации по умолчанию.

person joshmeranda    schedule 27.08.2020