Need to the sub-directories names and file names in that directory to a variable.
Here is the example in python.
import os
user_input = input("Enter a directory > ")
file_path = os.listdir(user_input)
print(file_path)
output:
Enter a directory > c:\
['$Recycle.Bin', '$WinREAgent', '.android', 'Apps', 'appverifUI.dll', 'c program', 'Config.Msi', 'dell', 'dell.sdr', 'Documents and Settings', 'Downloads', 'Drivers', 'DumpStack.log', 'DumpStack.log.tmp', 'hiberfil.sys', 'Intel', 'mingw32', 'OneDriveTemp', 'pagefile.sys', 'PerfLogs', 'Program Files', 'Program Files (x86)', 'ProgramData', 'Recovery', 'swapfile.sys', 'System Volume Information', 'Users', 'vfcompat.dll', 'Windows', 'Wondershare UniConverter 14']
The classic way is:
import std/os
stdout.write "Enter a directory > "
let userInput = stdin.readLine()
var dirs: seq[string]
for (kind, path) in walkDir(userInput, relative = true):
dirs.add path
echo dirs
If you don't want an explicit for loop, you can instead use the collect macro from std/sugar:
import std/[os, sugar]
stdout.write "Enter a directory > "
let userInput = stdin.readLine()
let dirs = collect:
for (kind, path) in walkDir(userInput, relative = true):
path
echo dirs
Want to add that you can also use toSeq in sequtils
import std/[os, rdstdin, sequtils]
let userInput = readLineFromStdin "Enter a directory > "
let filePaths = toSeq(walkDir(userInput, relative = true))
.filterIt(it.kind == pcFile)
.mapIt(it.path)
echo filePaths